我正在构建一个动态构建数据表的组件。我需要从类中传入字段名称并将其连接到表的var属性。示例:“tblVar.firstName”。我已经尝试使用ui:param,如下面的代码所示,但它只打印它不评估firstName的字符串表达式。
有没有办法获取字符串并将其转换为EL表达式。
<composite:interface>
<composite:attribute name="pageBean" type="pagecode.app.Maintenence" required="true"/>
<composite:attribute name="dataTableList"/>
<composite:attribute name="columnHeader"/>
<composite:attribute name="columnFieldName"/>
</composite:interface>
<composite:implementation>
<p:dataTable id="doc_code_table" value="#{cc.attrs.pageBean.documentCodeList}"
var="tblVar" rowIndexVar="index" paginator="false">
<ui:param value="#{tblVar}.#{cc.attrs.columnFieldName}" name="colValue"/>
<p:column headerText="#{cc.attrs.columnHeader}">
<h:outputText value="#{colValue}"/>
</p:column>
</p:dataTable>
</composite:implementation>
答案 0 :(得分:2)
你确实在那里创建了一个字符串变量。效果与执行此操作完全相同:
<h:outputText value="#{tblVar}.#{cc.attrs.columnFieldName}" />
这是不对的。您应该使用括号符号#{bean[property}}
将变量用作属性名称。因此,所以:
<h:outputText value="#{tblVar[cc.attrs.columnFieldName]}"/>