﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-辰o(^o^)o的专栏[除非注释原创，其它文章基本来源于网络]-文章分类-JSF2.0</title><link>http://www.blogjava.net/jackybu/category/50594.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 10 Jan 2012 06:10:06 GMT</lastBuildDate><pubDate>Tue, 10 Jan 2012 06:10:06 GMT</pubDate><ttl>60</ttl><item><title>[原创]CDI(Weld)创建了多个@sessionScoped的bean的实例？</title><link>http://www.blogjava.net/jackybu/articles/368192.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Tue, 10 Jan 2012 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/368192.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/368192.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/368192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/368192.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/368192.html</trackback:ping><description><![CDATA[问题是这样的...<br />
按照Core JSF 3rd里面第三章做了quiz的练习。<br />
运行起来发现QuizBean里面的response无论如何也取不到值。结果总为""。<br />
Debug发现response的set成功了，但是一到answerAction()方法，response就恢复为初始状态。<br />
怀疑是否多次重复创建实例。即setResponse的实例跟被调用answerAction()的不是同一个实例。<br />
添加构造函数，并且在构造函数里面添加了System.out.println("xxx init");结果发现果然是多次创建实例。<br />
结论，sessionScoped没有起作用。google之。发现有个兄弟跟我有同样的问题。见下连接<a href="http://community.jboss.org/thread/173555">http://community.jboss.org/thread/173555</a><br />
<br />
根据Nicklas的回答，重新检查了下注释。<br />
<br />
结果如下。<br />
javax.inject.Named与javax.enterprise.context.SessionScoped同为CDI的注释。<br />
javax.faces.bean.ManagedBean与javax.faces.bean.SessionScoped为JSF的注释。<br />
<br />
如果要使用CDI那注册也需要使用CDI的方式来注册即Named。否则将无法找到。<br />
我的问题是使用了javax.inject.Name并且使用了javax.faces.bean.SessionScoped。所以CDI在session里找不到实例。故重复创建了实例。@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/jackybu/aggbug/368192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2012-01-10 11:08 <a href="http://www.blogjava.net/jackybu/articles/368192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>