2011-11-19 6 views
4

私は奇妙な問題があります。私はSessionScoped Beanをビュースコープのビーンに注入することができます。ここに私のコードです:JSF2 ManagedPropertyとしてViewScopedからSessionScoped Beanにアクセスできない

@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を使用して宣言していません。これは@ManagedBeanjavax.faces.beanパッケージと組み合わせては機能しません。 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

関連する問題