【问题标题】:Primefaces Celleditor event doesn't contain new valuePrimefaces Celleditor 事件不包含新值
【发布时间】:2015-02-13 11:31:31
【问题描述】:

我想使用 PF 4 单元格编辑器并坚持showcase 中的示例。但我得到以下行为: 我可以编辑我的单元格,bean 内的onCellEdit() 被调用,但该事件将包含event.getNewValue() 的旧值。听网络流量,我能够捕捉到这个:

javax.faces.partial.ajax=true&
javax.faces.source=pvChangeForm%3Apvc&
javax.faces.partial.execute=pvChangeForm%3Apvc&
javax.faces.partial.render=pvChangeForm%3Apvc+pvForm&
javax.faces.behavior.event=cellEdit&
javax.faces.partial.event=cellEdit&
pvChangeForm%3Apvc_encodeFeature=true&
pvChangeForm%3Apvc_cellInfo=0%2C1&
pvChangeForm%3Apvc%3A0%3Aj_idt127=pvChangeForm%3Apvc%3A0%3Aj_idt127&
pvChangeForm=pvChangeForm&pvChangeForm%3Apvc%3A0%3Aj_idt130=666&
javax.faces.ViewState=-8810553618561534598%3A1979735468348742605

重要的行是倒数第二行。 666 是我放入单元格的值。如果我再次编辑此单元格,它也会显示。但是离开单元格或者回车,都没有保存。

我的数据表:

<h:form id="pvChangeForm">
<p:dataTable id="pvc" var="tVar" value="#{paramBean.pvForChange.values}" editable="true" editMode="cell">
    <p:ajax event="cellEdit" listener="#{paramBean.onCellEdit}" update=":pvChangeForm:pvc" />
    <p:column>
        <p:cellEditor>
            <f:facet name="output"><h:outputText value="#{tVar}" /></f:facet>
            <f:facet name="input"><p:inputText value="#{tVar}" style="width:96%" label="Wert"/></f:facet>
        </p:cellEditor>
    </p:column>
</p:dataTable>
</h:form>

paramBean.pvForChange.values 是一个List&lt;String&gt;。不知何故,我觉得问题在于这个事实(因为我想直接编辑列表中的字符串)。但据我了解,这应该没有问题。

【问题讨论】:

    标签: jsf primefaces tablecelleditor


    【解决方案1】:

    是的,问题在于尝试更新未包含在 POJO 中的值。 Primefaces 数据表旨在处理包装在 POJO 中的属性,但也就是说,您可以使用 bean 作为包装对象来解决问题,就像这样

        <h:form id="pvChangeForm">
            <p:dataTable id="pvc" var="tVar" value="#{paramBean.pvForChange.values}"  rowIndexVar="index" editable="true" editMode="cell">
                <p:ajax event="cellEdit" listener="#{paramBean.onCellEdit}" update=":pvChangeForm:pvc" />
                <p:column>
                    <p:cellEditor>
                        <f:facet name="output"><h:outputText value="#{paramBean.pvForChange.values[index]}" /></f:facet>
                        <f:facet name="input"><p:inputText value="#{paramBean.pvForChange.values[index]}" style="width:96%" label="Wert"/></f:facet>
                    </p:cellEditor>
                </p:column>
            </p:dataTable>
        </h:form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-16
      • 2017-08-21
      • 2017-01-17
      • 2015-11-04
      • 1970-01-01
      • 2012-03-28
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多