如何在ui中创建p:dataTable:组合更可重用?

时间:2013-05-14 13:32:18

标签: jsf primefaces facelets el

我正在使用PrimeFaces 3.4,我在页面上有一系列.xhtml用于dataTables。我想为页面上的所有表使用一个.xhtml,并在为每种dataTable包含.xhtml时使用ui:param。如果我有以下代码片段:

<p:dataTable id="invoiceTable" emptyMessage="Pick a category from the drop down" 
    rows="10" var="invoice" value="#{editorUIBean.invoices}" scrollable="true"
    scrollHeight="180" editable="true" rowKey="#{invoice.seqId}"
    ...

想象一下,我有一张.xhtml用于发票,一张用于现金投标,一张用于销售税等,每个.xhtml都是相同的,除了支持bean中的属性以及ID和变量名称。那么,如果我对上面的片段进行泛化,WHAT_DO_I_REPLACE_THIS_WITH使其工作?

<p:dataTable id="#{tableId}" emptyMessage="#{emptyMessage}" rows="10" var="#{rowId}"
    value="#{editorUIBean[dataProperty]}" scrollable="true" scrollHeight="180"
    editable="true" rowKey="#{WHAT_DO_I_REPLACE_THIS_WITH[rowKey]}"
    ...

因此,如果此代码包含在editableTable.xhtml中,我将按如下方式使用:

...
<ui:include src="editableTable.xhtml">
    <ui:param name="tableId" value="invoiceId"/>
    <ui:param name="emptyMessage" value="Pick a category from the drop down"/>
    <ui:param name="rowId" value="invoice"/>
    <ui:param name="dataProperty" value="invoices"/>
    <ui:param name="rowKey" value="seqId"/>
    ...
</ui:include>
....

所以基本上我问,如何从rowId而不是字符串“invoice”获取变量发票?在JSF或PrimeFaces中是否有eval()函数?我可以做一些像eval(rowId)[rowKey]吗?

原谅我没有很好地回答我的问题,我是一名JSF / Primefaces新手并且不懂术语。

提前致谢。

0 个答案:

没有答案