在JSF primefaces应用程序上重用一些.xhtml页面

时间:2015-07-07 17:44:34

标签: jsf facelets

我使用JSF和PrimeFaces开发一个简单的应用程序,这是我面临的一个问题:

这些是具有Person属性的托管bean:

  • ClientBean
  • EmployeeBean

我有person.xhtml来显示来自某个人的数据。我在person.xhtmlclient.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/>是错误的。

任何人都可以提供帮助吗?

1 个答案:

答案 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