2011-07-05 47 views
2

我目前正在將項目從JBoss 4.2.2遷移到JBoss 6.0.0,並且我還添加了CDI的依賴注入以及從JSF 1.2遷移到JSF 2.0。我添加了一個beans.xml文件到ejb-package以及war-package。@Named的行爲不同於@ManagedBean

現在我有一個使用託管bean LoginBean.java的xhtml頁面。豆已在faces-config.xml中已配置是這樣的:

<managed-bean> 
    <description>Sample description</description> 
    <managed-bean-name>loginBean</managed-bean-name> 
    <managed-bean-class>com.sample.managedbeans.LoginBean</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
</managed-bean> 

因此,在第一予除去上述結構,並加入到@ManagedBean @SessionScoped類本身。因爲我想將CDI添加到項目中,所以我將@ManagedBean更改爲@Named(與question 2930889相關)。

現在,當我提交的相應的XHTML的形式,字段用戶名和密碼(在JSP用作#{loginBean.username})都爲空。當我改回@ManagedBean時,它工作正常。

我失去了一些東西在這裏?

親切的問候, 塞巴斯蒂安

回答

5

實際上有現在二人@SessionScoped註釋在EE6,@javax.faces.bean.SessionScoped這是從JSF 2規範,只有@ManagedBean一起工作,再有就是從CDI @javax.enterprise.context.SessionScoped。我的猜測是你正在使用jsf註釋,它被cdi忽略,所以cdi創建了一個新的bean實例。

+0

聖牛。這很討厭。還沒有嘗試過,但你是對的。使用錯誤的名稱空間。 –