我使用JSF和PrimeFaces开发一个简单的应用程序,这是我面临的一个问题:
这些是具有Person
属性的托管bean:
ClientBean
EmployeeBean
我有person.xhtml
来显示来自某个人的数据。我在person.xhtml
和client.xhtml
上添加了employee.xhtml
。我需要创建两个person.xhtml
因为我使用不同的bean。我想做的是这样的事情:
<c:set var="person" value="clientBean.person" />
<ui:include src="person.xhtml"/>
<c:set var="person" value="employeeBean.person" />
<ui:include src="person.xhtml"/>
在我的person.xhtml
我可以使用#{person.name}
,#{person.dateOfBirth}
。
我搜索并在JSF中使用<c:set/>
是错误的。
任何人都可以提供帮助吗?
答案 0 :(得分:3)
将其传递为<ui:param>
。
<ui:include src="person.xhtml">
<ui:param name="person" value="#{clientBean.person}" />
</ui:include>
<ui:include src="person.xhtml">
<ui:param name="person" value="#{employeeBean.person}" />
</ui:include>
如有必要,请注册person.xhtml
作为标记文件以使其看起来更好,另请参阅When to use <ui:include>, tag files, composite components and/or custom components?
<my:personForm value="#{clientBean.person}" />
<my:personForm value="#{employeeBean.person}" />
注意重复的组件ID错误。另请参阅Avoiding duplicate ids when reusing facelets compositions in the same naming container。