且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

我可以在同一个 xhtml 页面中使用多个托管 bean 吗?

更新时间:2022-10-29 17:01:00

我可以在同一个 xhtml 页面中使用多个托管 bean 吗?

是的,你可以,我强烈建议你尝试一下:)

它的影响是什么?

这取决于托管 bean 范围.一个很好的例子是注册一个新地址并在页面顶部显示登录的用户信息,类似于您添加新送货地址的亚马逊网站.

在这种情况下,您可以拥有三个托管 bean:

  • 一个 @SessionScoped bean,将显示登录的用户信息.在亚马逊视图的情况下,它只显示名字.
  • 一个 @ApplicationScoped bean,将为国家/地区提供数据.此信息不会经常更改(至少每天都有一个新国家诞生 =).
  • 一个 @ViewScoped bean,它将处理请求数据、错误消息和注册.

Facelets 代码中上述解释的示例:

你好#{sessionBean.user.firstName}

<div id="body"><h1>添加地址</h1><h:form id="frmAddress"><h:panelGrid columns="2"><h:outputText value="地址"/><h:inputText id="txtAddress" value="#{viewBean.address}"/><h:outputText value="国家/地区"/><h:selectOneMenu id="ddlCountry" value="#{viewBean.selectedCountry}"><f:selectItems value="#{applicationBean.countries}" var="country"itemLabel="#{country.name}" itemValue="#{country}"/></h:selectOneMenu></h:panelGrid><h:messages id="msgErrors"/><h:commandButton value="保存地址" action="#{viewBean.saveAddress}"/></h:form>