JSF:绑定同一表单域中的两个值



当用户登录时,我在登录 bean 中设置了一个值用

-

-登录豆

 setMailNickname(mailnickname);

在信息页面中,我能够使用

-

-信息页面

 <h:inputText value="#{login.mailNickname}" />
现在在信息页面上,

我从用户那里获取更多信息并将其全部保存在数据库中,由于其中一个值来自登录表单 bean,因此它在信息页面上预填充,但如何将相同的值分配给信息页面 bean 变量-

InfoBean.mailNickname

以便可以将其与用户提供的其他字段一起保存到数据库中。如何将值分配给信息页 bean 变量?

您可以将 LoginBean 注入 InfoBean,以便您可以引用其字段。据我了解,你的一个豆子至少是@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 时,请求范围的 Bean 可能还不存在)。

相关内容

  • 没有找到相关文章

最新更新