我需要您的帮助。我使用的是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组件。 –