2 つの jsf ページとそれぞれに 2 つの Bean があります。最初のページはログイン ページで、ユーザーがログイン パスワードを入力すると、メールボックス ページにリダイレクトされます。ログインページからメールボックスページにデータを取得したい。
ログインページの私のBean:
@ManagedBean(name = "login")
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@RequestScoped
public class LoginFormBean {
@EJB
private LoginService loginService;
private String email;
private String password;
public String getEmail() {
return email;
}
public String getPassword() {
return password;
}
public void setEmail(String email) {
this.email = email;
}
public void setPassword(String password) {
this.password = password;
}
public String login() {
if (loginService.loginUser(email, password))
return "mailBox.xhtml?faces-redirect=true";
else return "";
}
}
メールボックスページの私のBean:
@ManagedBean(name = "mailBox")
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@RequestScoped
public class MailBoxFormBean {
@ManagedProperty(value = "#{login}")
private LoginFormBean login;
private String email = login.getEmail();
public void setLogin(LoginFormBean login) {
this.login = login;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
しかし、メールボックス ページにリダイレクトすると、ログイン Bean が null になり、そこからデータを取得できません。私が間違っていることは何ですか?
多くのチュートリアルと回答を見てきました (たとえば、 @ManagedProperty を使用してマネージド Bean 間でメソッドを呼び出す、または http://www.techartifact.com/blogs/2013/01/access-one-managed-bean-from- another-in-jsf-2-0.html )
私はまったく同じことをしていますが、それは私にとってはうまくいきません。