有没有办法在设置参数时使用变量来定义辅助bean。在我们的应用程序中,我们允许对表上的大多数(如果不是全部)列使用多个过滤条件我们开发了一段代码,将其复制到实现此目的的每个列定义中。列定义示例:
<p:column styleClass="dataTableColumnAlignLeft" id="c0"
style="width: 200px" exportable="false">
<ui:include src="/html/common/dataTableColumnHeader5_2.xhtml">
<ui:param name="programId" value="backingBeanName" />
<ui:param name="fieldName" value="depositName" />
<ui:param name="displayLessThanFilter" value="false" />
<... several more ui:include parameters />
</ui:include>
<h:outputText value="#{cashReceiptsDeposList.depositName}" />
</p:column>
包含的代码构建列标题,并具有命令按钮来对列进行排序并显示用户帮助文本,所有这些都可以正常工作。但它还包含一个命令按钮,用于执行从用户获取的对话框,为每列提供多个过滤参数。这在PF 3.2中运行良好,但在转换为5.2时,它停止工作。在查看文档时,我发现对话框不应包含在表定义中,因此我们尝试将对话框移到表定义之外。但是,这意味着为ui:include带来的代码设置的参数对话框不可见。我可以通过以下方式将特定于要过滤的列的参数设置到辅助bean中来解决此问题:
<p:commandLink tabindex="-1" rendered="#{displayFilters}"
update=":filterDialogForm:filterDialog"
oncomplete="PF('filterDialog').show();" id="#{fieldName}FPL"
title="#{label}">
<f:setPropertyActionListener target="#{backingBeanName.label}" value="#{label}" />
<f:setPropertyActionListener target="#{backingBeanName.fieldName}" value="#{fieldName}" />
<f:setPropertyActionListener target="#{backingBeanName.displayContainsFilter}" value="#{displayContainsFilter}" />
<p:graphicImage rendered="#{displayFilters}" tabindex="-1"
style="border:0px;" width="20" height="20"
value='#{empty filtersHandler..../>
</p:commandLink>
然后,对话框可以获取这些支持bean元素的内容,以便知道要请求的过滤器。如果我可以将bean名称指定为变量,我只需要复制的代码片段的单个副本,但是如果我必须输入实际的bean名称,我将需要每个具有表的页面的副本,超过1000现在。我已经尝试了几种使用变量的方法,例如target =&#34;#{{programId} .field}&#34;,但到目前为止,它们都无法解析或被解释为静态bean名称而是比变量。是否可以使用变量?
指定bean名称环境:PF 5.2,jBoss 7.1.3,jdk-7,jsf 2.2