【问题标题】:Datatable cellEditor functionality in forEach generated DatatableforEach 生成的 Datatable 中的 Datatable cellEditor 功能
【发布时间】:2018-06-06 09:43:01
【问题描述】:

我正在尝试根据先前执行的 SQL 查询的结果集动态生成可编辑的数据表。 根据哪些列将具有恒定值,我试图不呈现它们。这部分代码工作得很好,一切都按照我的意愿显示。 我的问题在于 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 列表,用于标识对应于各个变量的 header-Texts。

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

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

dataTable 的 forEach 初始化是否存在 cellEdit 问题?如果是,有没有办法解决它?否则我做错了什么?

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

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

【问题讨论】:

  • 您为每一列生成一个&lt;p:ajax event="cellEdit" listener="#{stammdaten.onCellEdit}" update=":Mb:message"/&gt;。不要那样做,把它移到循环之外。不确定它是否解决任何问题,但它并不好
  • 修复了这个问题,我认为我最初将它放在循环之外,在发布问题之前将它放在我努力解决问题的过程中。然而,遗憾的是,这并不是问题的根源。
  • 尝试将&lt;f:attribute name="myCol" value="#{column}" /&gt;&lt;span&gt;....&lt;/span&gt; 删除到?在制作minimal reproducible example。哦,你的PF版本是什么?尝试过最新的(仅针对本期)?
  • 不知何故,属性和/或跨度导致了问题。谢谢你让我走上正轨:)
  • 下次总是创建一个minimal reproducible example。到时候你自己会发现的。

标签: foreach primefaces datatable jstl


【解决方案1】:

找出问题原因所在的属性和/或跨度。只需删除它们即可解决 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>

【讨论】:

  • 不,我指的是文本开头的“the and/or where”句子。标签在那里不可见....
猜你喜欢
  • 2018-03-03
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多