forEach生成的Datatable中的Datatable cellEditor功能

时间:2018-06-06 09:43:01

标签: foreach primefaces datatable jstl

我正在尝试生成一个可编辑的数据表,它动态依赖于先前执行的SQL-Query的结果集。 根据哪些列具有常量值,我试图不渲染它们。代码的那部分工作正常,一切都显示为我希望它。 我的问题在于cellEditor。我按如下方式生成我的数据:

    <p:dataTable ajax="true" var="mBT" value="#{stammdaten.bbvList}" id="meldeBearbeitungsTable" editable="true" editMode="cell" scrollable="true" scrollHeight="400" style="width:600px">
    <p:ajax event="cellEdit" listener="#{stammdaten.onCellEdit}" update=":Mb:message"/>
    <c:forEach var="column" items="#{stammdaten.columns}">
        <p:column headerText="#{column.header}">
            <f:attribute name="myCol" value="#{column}" />
            <span>
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{mBT[column.property]}"></h:outputText>
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{mBT[column.property]}">
                            <p:keyFilter regEx="/[0-9]/i"/>
                        </p:inputText>
                    </f:facet>
                </p:cellEditor>
            </span>
        </p:column>
      </c:forEach>
    </p:dataTable>

bbvList是具有不同值的bean列表。

columns是一个bean列表,用于标识与各个变量相对应的标题文本。

所以现在问题本身: 这是我点击它时cellEditor的样子: Issue-Picture

因此,在该示例中,我尝试编辑其中值为“8”的字段。 onCellEdit被触发(System.out.println正在控制台上打印)但我实际上无法更改相应字段中的值。

对于dataTable的forEach初始化,是否有cellEdit问题?如果有,是否有办法解决它?不管我做错了什么?

由于只有代码的html端的特定组件不能正常工作,所以我现在不会发布不必要的java-Code。如果需要,我也会添加它。

希望有人可以提供帮助:)

1 个答案:

答案 0 :(得分:0)

结果显示问题原因的属性和/或范围。简单地删除它们解决了cellEdit的问题。 以下工作正常:

<p:dataTable ajax="true" var="mBT" value="#{stammdaten.bbvList}" id="meldeBearbeitungsTable" editable="true" editMode="cell" scrollable="true" scrollHeight="400" style="width:600px">
  <p:ajax event="cellEdit" listener="#{stammdaten.onCellEdit}" update=":Mb:message"/>
  <c:forEach var="column" items="#{stammdaten.columns}">
    <p:column headerText="#{column.header}">
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{mBT[column.property]}"></h:outputText>
                </f:facet>
                <f:facet name="input">
                    <p:inputText value="#{mBT[column.property]}">
                        <p:keyFilter regEx="/[0-9]/i"/>
                    </p:inputText>
                </f:facet>
            </p:cellEditor>
    </p:column>
  </c:forEach>
</p:dataTable>