动态构建列值

时间:2013-05-16 20:05:53

标签: jsf datatable el composite-component

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

1 个答案:

答案 0 :(得分:2)

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

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

这是不对的。您应该使用括号符号#{bean[property}}将变量用作属性名称。因此,所以:

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

另见: