隨筆 - 3, 文章 - 152, 評論 - 17, 引用 - 0
          數(shù)據(jù)加載中……

          [原創(chuàng)]CDI(Weld)創(chuàng)建了多個@sessionScoped的bean的實例?

          問題是這樣的...
          按照Core JSF 3rd里面第三章做了quiz的練習。
          運行起來發(fā)現(xiàn)QuizBean里面的response無論如何也取不到值。結(jié)果總為""。
          Debug發(fā)現(xiàn)response的set成功了,但是一到answerAction()方法,response就恢復為初始狀態(tài)。
          懷疑是否多次重復創(chuàng)建實例。即setResponse的實例跟被調(diào)用answerAction()的不是同一個實例。
          添加構(gòu)造函數(shù),并且在構(gòu)造函數(shù)里面添加了System.out.println("xxx init");結(jié)果發(fā)現(xiàn)果然是多次創(chuàng)建實例。
          結(jié)論,sessionScoped沒有起作用。google之。發(fā)現(xiàn)有個兄弟跟我有同樣的問題。見下連接http://community.jboss.org/thread/173555

          根據(jù)Nicklas的回答,重新檢查了下注釋。

          結(jié)果如下。
          javax.inject.Named與javax.enterprise.context.SessionScoped同為CDI的注釋。
          javax.faces.bean.ManagedBean與javax.faces.bean.SessionScoped為JSF的注釋。

          如果要使用CDI那注冊也需要使用CDI的方式來注冊即Named。否則將無法找到。
          我的問題是使用了javax.inject.Name并且使用了javax.faces.bean.SessionScoped。所以CDI在session里找不到實例。故重復創(chuàng)建了實例。@import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

          posted on 2012-01-10 11:08 閱讀(814) 評論(0)  編輯  收藏 所屬分類: JSF2.0


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 阿拉善左旗| 建宁县| 房山区| 沈阳市| 云林县| 宜章县| 武汉市| 耒阳市| 霍山县| 剑阁县| 东辽县| 平舆县| 六枝特区| 延安市| 英吉沙县| 林芝县| 周至县| 上林县| 普宁市| 潍坊市| 霍山县| 清徐县| 谢通门县| 南部县| 徐汇区| 兴隆县| 永胜县| 金湖县| 筠连县| 淮南市| 武隆县| 丰镇市| 永城市| 房产| 雷州市| 中宁县| 乌拉特后旗| 武平县| 江门市| 永善县| 昭苏县|