当有多个页面重复的数据时(参考示例) 是我可以加载到一个托管bean中,并在同一页面中使用多个托管bean。 它的影响是什么?
答案 0 :(得分:17)
我可以在同一个xhtml页面中使用多个托管bean吗?
是的,你可以,我强烈建议你尝试一下:)。
它有什么影响?
这取决于托管bean范围。一个很好的例子是拥有一个注册新地址的视图,并在页面顶部显示已记录的用户信息,类似于您添加新送货地址的Amazon网站。
在这种情况下,您可以拥有三个托管bean:
@SessionScoped
bean。如果是亚马逊视图,它只显示名字。@ApplicationScoped
bean。这个信息不会经常变化(至少每天都有一个新的国家出生= \)。@ViewScoped
bean。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>
注意:这也不是一个好的也不是一个坏的做法,只是试试看它是如何表现的。影响定义了每个托管bean在页面中的行为方式,因此根据您定义bean的方式,它将非常整洁或非常糟糕。
相关信息: