当有数据在几个页面中重复时(参考示例)我可以加载到一个托管bean中,并在同一页面中使用多个托管bean.它的影响是什么?
Lui*_*oza 17
我可以在同一个xhtml页面中使用多个托管bean吗?
是的,你可以,我强烈建议你试试:).
它的影响是什么?
这取决于托管bean范围.一个很好的例子是拥有一个注册新地址的视图,并在页面顶部显示已记录的用户信息,类似于您添加新送货地址的Amazon网站.
在这种情况下,您可以拥有三个托管bean:
@SessionScopedBean,它会显示登录的用户信息.如果是亚马逊视图,它只显示名字.@ApplicationScoped豆将为各国提供的数据.这个信息不会经常变化(至少每天都有一个新的国家出生= \).@ViewScoped豆将处理请求数据,出错信息和注册.Facelets代码中的上述说明示例:
<div id="top">
Hello #{sessionBean.user.firstName}
</div>
<div id="body">
<h1>Add an address</h1>
<h:form id="frmAddress">
<h:panelGrid columns="2">
<h:outputText value="Address" />
<h:inputText id="txtAddress" value="#{viewBean.address}" />
<h:outputText value="Country" />
<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="Save address" action="#{viewBean.saveAddress}" />
</h:form>
</div>
Run Code Online (Sandbox Code Playgroud)
注意:这也不是一个好的也不是一个坏的做法,只要试一试,看看它是如何表现的.影响是根据您定义bean的方式定义每个托管bean在页面中的行为方式,因此它将非常整洁或非常糟糕.
相关信息: