我需要您的幫助。我使用的是JSF 2.0,我有一個數據表組件。數據表中的一列是動作列,我需要創建一個包含不同類型的動作源組件的工具欄,如命令按鈕,鏈接等。動作源的類型在運行時確定,動作源的數量也在運行。我怎麼能在JSF 2.0實現這個JSF中的動態列Datatable JSF2.0
<p:dataTable value="#{listBranchBean1.rowDataModel}" var="rowItem"
id="myId" paginator="true"
paginatorTemplate="{FirstPageLink}{PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}{RowsPerPageDropdown} "
rowsPerPageTemplate="10,5,2" previousPageLinkLabel="<"
nextPageLinkLabel=">" widgetVar="branchTable"
selection="#{listBranchBean1.selectedBranchesPrime}"
resizableColumns="true"
sortBy="#{rowItem.columnsValueMap['branchId'].value}">
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Search all fields:" />
<p:inputText id="globalFilter" onkeyup="branchTable.filter()"
style="width:150px" />
</p:outputPanel>
</f:facet>
<p:column selectionMode="multiple" style="text-align:left">
<f:facet name="header">
<h:outputText value="Select" />
</f:facet>
<h:outputText value="#{rowItem.uniqueId}" />
</p:column>
<p:column
rendered="#{listBranchBean1.columnsMap['objectId'].hidden==false}"
sortBy="#{rowItem.columnsValueMap['objectId'].value}"
filterBy="#{rowItem.columnsValueMap['objectId'].value}">
<f:facet name="header">
<h:outputText
value="#{listBranchBean1.columnsMap['objectId'].displayLabel}" />
</f:facet>
<h:outputText
value="#{rowItem.columnsValueMap['objectId'].value}" />
</p:column>
<p:column
rendered="#{listBranchBean1.columnsMap['actions'].hidden==false}">
<f:facet name="header">
<h:outputText
value="#{listBranchBean1.columnsMap['actions'].displayLabel}" />
</f:facet>
<p:toolbar>
<p:toolbarGroup>
<ui:repeat var="action"
value="#{rowItem.columnsValueMap['actions'].value}">
<p:commandButton title="#{action}" type="button">
</p:commandButton>
</ui:repeat>
</p:toolbarGroup>
</p:toolbar>
</p:column>
</p:dataTable>
我要替換的東西最後一列類似
<p:toolbar binding="#{listBranchBean1.getActions(rowItem)}">
</p:toolbar>
我感謝你的幫助
Prajeesh奈爾
1.範圍可以由最終用戶來定義上創建動態列,因爲它是一個定製的解決方案。截至目前,它是一個ViewScope。如果你看到可能是最後一列,則rowItem是可變數據var。所以我需要獲取特定於該行的操作列。每行都會有所不同 –
如果您需要動態列,請使用arjan的解決方案。如果您還需要每行動態內容,請放入多個組件並有條件地呈現它們。數據表中的每行不能有任意的組件,因爲行並不真正存在(它是使用不斷變化的數據呈現的列)。如果你需要,可以看看一些datagrid組件。 –