我在用户登录时在login-bean中设置一个值 使用
- 的登录豆
setMailNickname(mailnickname);
在信息页面中,我可以使用
检索相同的值- 的 InfoPage
<h:inputText value="#{login.mailNickname}" />
现在在信息页面上,我从用户那里获取更多信息并将所有信息保存在数据库中,因为其中一个值来自登录表单bean,它是在信息页面上预先填充但是如何分配与info-page bean变量相同的值 -
InfoBean.mailNickname
以便可以使用用户提供的其他字段将其保存到数据库中。 如何将值分配给infopage bean变量?
答案 0 :(得分:1)
您可以将LoginBean注入InfoBean,以便您可以引用其字段。据我所知,你的一个bean至少是@SessionScoped。你没有提供这些信息,所以我猜想LoginBean用于登录你的应用程序或类似的东西,而InfoBean用来保存这些信息以供将来参考。遵循这一思路,您的InfoBean将如下所示:
@ManagedBean
@SessionScoped
public class InfoBean {
private String mailNickname;
public String getMailNickname() {
return mailNickname;
}
public void setMailNickname(final String mailNickname) {
this.mailNickname = mailNickname;
}
// other fields, methods...
}
然后您的LoginBean将保持对会话范围的InfoBean的引用:
@ManagedBean
@ViewScoped
public class LoginBean {
private String mailNickname;
public String getMailNickname() {
return mailNickname;
}
public void setMailNickname(final String mailNickname) {
this.mailNickname = mailNickname;
}
@ManagedProperty("#{infoBean}")
private InfoBean infoBean;
public void setInfoBean(final InfoBean infoBean) {
this.infoBean = infoBean;
}
/** Method you use for populating */
public void populateInput(final String mailNicknameFromDb) {
setMailNickname(mailNicknameFromDb);
infoBean.setMailNickname(mailNicknameFromDb);
}
}
请记住这些字段的getter和setter以及managedProperty的setter并注意范围(例如,您不能将请求范围的bean注入到应用程序范围的bean中,因为请求范围的bean可能不存在但是在创建应用程序范围的时候。)