ビュー スコープの Bean とセッション スコープの Bean を持つ JSF Web アプリケーションがあります。ビュー Bean からセッション Bean のメンバーを変更したいのですが、ある有名な JSF 担当者のこのガイドに従いましたが、実行時例外なしでは機能しないようです。マネージド セッション Bean への参照である「ホーム」は、参照時に null です。この質問と同様ですが、受け入れられた回答のアドバイスに従っていることを除きます。
package brian.canadaShipping;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
@ManagedBean(name= "requestBean")
@ViewScoped
public class CpstcRequestBean implements Serializable {
@ManagedProperty(value="#{home}")
private CpstcHomeBean homeBean;
public CpstcHomeBean getHomeBean() {
return homeBean;
}
public void setHomeBean(CpstcHomeBean homeBean) {
this.homeBean = homeBean;
}
private static final long serialVersionUID = -5066913533772933899L;
public String testVar = "hello world";
private boolean displayOutput = false;
public boolean isDisplayOutput() {
return displayOutput;
}
public void setDisplayOutput(boolean displayOutput) {
this.displayOutput = displayOutput;
}
public String getTestVar() {
return testVar;
}
public void setTestVar(String testVar) {
this.testVar = testVar;
}
public CpstcRequestBean()
{
System.out.println("TEST: " + homeBean.toString());
System.out.println("Hello, ResuestBean!");
}
}
私の「ホーム」Bean の最初のビットは次のとおりです。
@ManagedBean(name= "home")
@SessionScoped
public class CpstcHomeBean implements Serializable {
...
更新:私はヨルダンの提案に従いました。ビュー スコープの Bean には次のものがあります。
@ManagedBean(name= "requestBean")
@ViewScoped
public class CpstcRequestBean implements Serializable {
@Inject @Named("home") CpstcHomeBean homeBean;
public CpstcHomeBean getHomeBean() {
return homeBean;
}
public void setHomeBean(CpstcHomeBean homeBean) {
this.homeBean = homeBean;
}
public CpstcRequestBean()
{
System.out.println("TEST: " + homeBean.toString());
System.out.println("Hello, ResuestBean!");
}
...
これと同様に、セッションスコープの Bean で:
@Named("home")
@SessionScoped
public class CpstcHomeBean implements Serializable {
...
それでも、私の「ホーム」Bean 参照はまだ null です。何か案は?
更新 2:注入されたクラスだけでなく、両方のクラスで @Named を使用する必要があることが判明しました。Web アプリが読み込まれるようになりましたが、一部の要素が空白です。コンソール ログに、「ターゲットに到達できません。識別子 'home' が null に解決されました。」それが問題に影響する場合、私はTomcat 7で実行しています。何か案は?