1

我正在构建一个将动态构建数据表的组件。我需要从类中传入字段名称并将其连接到表的 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>
4

1 回答 1

2

您确实在那里创建了一个字符串变量。效果与您执行此操作时完全相同:

<h:outputText value="#{tblVar}.#{cc.attrs.columnFieldName}" />

这个不对。您应该使用大括号表示法#{bean[property}}将变量用作属性名称。因此,所以:

<h:outputText value="#{tblVar[cc.attrs.columnFieldName]}"/>

也可以看看:

于 2013-05-17T01:51:21.780 回答