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 に答える