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

Reuse some .xhtml pages on a JSF primefaces application

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

这些托管 bean 具有 Person 属性:

我有 person.xhtml 显示一个人的数据。我在 client.xhtmlemployee.xhtml 上包含了 person.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/> 是错误的。

有人可以帮忙吗?

将其作为 <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