我的应用程序中的某些字段在实体之间是通用的。我不想将它们从一个xhtml复制到另一个,所以我创建了一个单独的xhtml,然后是ui:包含它需要的位置。我面临的挑战是将包含xhtml的连接添加到支持表单的bean中。
这里只是一个简单的例子。播放器和教练是独立的实体,并具有专用的xhtml文件。它们都有一个名为firstName
的字段,并且都有一个Save
按钮。这两个元素位于单独的common.xhtml
文件中。
<h:inputText value="#{playerBean.player.firstName}" '/>
<h:commandButton value="Save" action="#{playerBean.save}" />
当它包含在`coach_edit.xhtml'下时,这段代码显然不起作用,因为在这种情况下,bean名称是coachBean,实体存储在coachBean.coach中。
是否可以通过某种别名而不是显式名称将输入文本和命令按钮绑定到beans / properties?
更新
Lada的解决方案适用于豆类部分。至于bean上的实体,我向Player和Coach bean添加了一个getEntity()
方法,分别返回玩家和教练。这样,包含的xhtml就是entity
而不是player
或coach
。
答案 0 :(得分:3)
您可以通过参数将相应的bean传递给包含的XHTML文件。在你的情况下使用它:
<ui:include source="common.xhtml">
<ui:param name="commonBean" value="#{playerBean}"/> <!-- or coachBean in second case -->
</ui:include>