【发布时间】:2015-05-14 13:42:04
【问题描述】:
我需要创建一个表格,其中标题列表来自模型。表格内容也存储在模型和数据上的 p:dataTable 循环中,以根据列名显示内容。
问题是我需要使一些特定的单元格可编辑。对于输出数据没有问题,因为我使用模型方法,它同时采用实体和列名,并根据列名从实体返回正确的信息。问题在于我不知道如何在实体中设置的可编辑单元格的输入。
<p:dataTable id="processTable" var="entity" value="#{home.process.headerEntities}" tableStyle="width:auto" draggableColumns="true" editable="true" editMode="cell">
<p:columns value="#{home.process.columns}" var="columnHead" >
<f:facet name="header">
<h:outputText value="#{columnHead}"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{home.process.getData(entity, columnHead)}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{home.process.getData(entity, columnHead)}" rendered="#{home.process.isEditable(columnHead)}" style="width:100%" />
</f:facet>
</p:cellEditor>
</p:columns>
</p:dataTable>
根据最佳答案更改后
<p:dataTable id="processTable" var="entity" value="#{home.process.headerEntities}" tableStyle="width:auto" draggableColumns="true" editable="true" editMode="cell">
<p:columns value="#{home.process.columns}" var="columnHead" >
<f:facet name="header">
<h:outputText value="#{columnHead}"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{entity[home.process.columnPropertyMap[columnHead]]}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{entity[home.process.columnPropertyMap[columnHead]]}" rendered="#{home.process.isEditable(columnHead)}" style="width:100%" />
</f:facet>
</p:cellEditor>
</p:columns>
</p:dataTable>
【问题讨论】:
-
把dataTable绑定到一个backing bean怎么样?
-
@DaDaDom:我不建议这样做。只需使用 XHTML 来声明/创建组件。它比在 Java 中更易于维护。
标签: jsf primefaces