2011-11-19 33 views
4

我有一個奇怪的問題。 Afaik我可以將一個SessionScoped bean注入到一個viewscoped中,因爲它比另一個更廣泛。這裏是我的代碼:JSF2無法從ViewScoped獲取SessionScoped bean作爲ManagedProperty

@ManagedBean 
@ViewScoped 
public class ProjectBean implements Serializable { 

@ManagedProperty(value="#{projectCurrentBean}") 
private ProjectCurrentBean currentBean; 

public void setCurrentBean(ProjectCurrentBean currentBean) { 
    this.currentBean = currentBean; 
}  

@ManagedProperty(value="#{userCredentialsBean}") 
private UserCredentialsBean activeUser; 

public void setActiveUser(UserCredentialsBean activeUser) { 
    this.activeUser = activeUser; 
} 

的2託管bean:

@ManagedBean 
@SessionScoped 
public class ProjectCurrentBean implements Serializable { 

@ManagedBean 
@SessionScoped 
public class UserCredentialsBean implements Serializable { 

它正常工作與UserCredentialsBean,但是當我把ProjectCurrentBean失敗:

Unable to create managed bean projectBean. The following problems were found: - The scope of the object referenced by expression #{projectCurrentBean}, request, is shorter than the referring managed beans (projectBean) scope of view 

爲什麼? :)

回答

11

您還沒有使用@SessionScopedjavax.faces.bean package,而是從javax.enterprise.context package宣佈的豆。這與javax.faces.bean包中的@ManagedBean組合不起作用。然後,該bean將默認爲請求範圍並表現得像@RequestScoped

修復您的導入。

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

@ManagedBean 
@SessionScoped 
public class ProjectCurrentBean implements Serializable { 
+2

omg,謝謝!什麼是錯誤 – kristu

+4

小心IDE自動完成。 – BalusC

相關問題