是否可以多次重复使用一个页面连接到不同的对象?
我有一个页面,你可以输入个人信息(姓名,地址,社交号码......)连接到一个bean:前景。 在某些情况下,我必须收集相关的个人信息。信用评分的例子(一个人和一个担保人)。
所以我想用2包括。但是,如何确保include1保存person1的信息,include2保存person2的信息?
<rich:tabPanel id="creditScoreTab" switchType="client" >
<rich:tab id="mainContractor" >
<ui:include src="includes/prospect.xhtml" />
</rich:tab>
<rich:tab id="guarantor">
<ui:include src="includes/prospect.xhtml" />
</rich:tab>
</rich:tabPanel>
和facescontext
<managed-bean>
<managed-bean-name>prospect</managed-bean-name>
<managed-bean-class>be.foo.Prospect</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
</managed-bean>
我找到了两种可能的解决方法: -duplicate页面并在faces-config中定义2个bean(指向同一个java类) - 不要使用tabpanel和include,但输入person1信息,然后保存并加载person2信息并保存person2。
解决方法1的负面影响是它保持两次相同的代码。解决方法2的负面观点是,它不是那么'酷'(ux观点)
答案 0 :(得分:7)
您可以使用<ui:param>
将参数传递给<ui:include>
:
<rich:tabPanel id="creditScoreTab" switchType="client" >
<rich:tab id="mainContractor" >
<f:subview id="mainContractorView">
<ui:include src="includes/prospect.xhtml">
<ui:param name="person" value="#{bean.person1}" />
</ui:include>
</f:subview>
</rich:tab>
<rich:tab id="guarantor">
<f:subview id="guarantorView">
<ui:include src="includes/prospect.xhtml">
<ui:param name="person" value="#{bean.person2}" />
</ui:include>
</f:subview>
</rich:tab>
</rich:tabPanel>
通过上面的示例,在每个包含中,所需的人将以#{person}
的形式提供。这些<f:subview>
标记用于防止重复的组件ID错误,因为它们最终位于同一个UINamingContainer
父级内。