Java JSF p:p:dataTable中的日历:在AJAX之后未正确更新

Java JSF p:p:dataTable中的日历:在AJAX之后未正确更新,java,ajax,jsf-2,primefaces,Java,Ajax,Jsf 2,Primefaces,我又遇到了:-p:dataTable中的p:calendar出现了一个奇怪的问题: 但发生更改的表的行始终包含实际更改的值(请参见图),但由于重新排序,现在应该属于另一行 第三行object.id=147中的日期从2012年4月5日更改为2012年4月20日。更新后,更改日期位于第一个位置,这是确定的。但第三行不包含id=141的未更改日期,它保存了新数据20.04.12: 有趣的是:h:outputText也包含错误的日期。我只能假设p:calendar在执行bean方法后覆盖了该值。您最好使

我又遇到了:-p:dataTable中的p:calendar出现了一个奇怪的问题:

但发生更改的表的行始终包含实际更改的值(请参见图),但由于重新排序,现在应该属于另一行

第三行object.id=147中的日期从2012年4月5日更改为2012年4月20日。更新后,更改日期位于第一个位置,这是确定的。但第三行不包含id=141的未更改日期,它保存了新数据20.04.12:


有趣的是:h:outputText也包含错误的日期。我只能假设p:calendar在执行bean方法后覆盖了该值。

您最好使用update=@form,而不是update=:id\u of\u form,这里也不需要:。。。你能确认UpdateCom在列表中更改了正确的元素吗?好的,尝试了@form,但没有成功。只更新了一个元素,上面的调试输出确认了它是正确的元素,并且列表的顺序正确。您是否在java代码的前后迭代了该列表,它反映了页面上显示的值?是的,我已经通过迭代完成了这一步。请参阅更新的问题。是否有可能是您获取行id的方式的原因。。。您是否尝试过ui.getParent.getId方式?参考资料等?
<h:form id="fId">
  <p:dataTable var="cum" value="#{myBean.list}">
    <p:column>
      <p:calendar value="#{cum.validFrom}">  
        <p:ajax update=":fId" event="dateSelect" listener="#{myBean.upDateCum}"/>  
      </p:calendar>  
    </p:column>
    <p:column>
      <h:outputText value="#{cum.validFrom}"/>
    </p:column>
  </p:dataTable>
</h:form>
public void upDateCum(DateSelectEvent event)
{
    // Logging Before (iteration over list, debugging id and date)
    // set date with provided date from event
    // Logging After (iteration over list, debugging id and date)
}

20:53:10,455 INFO  [myBean]  Before id:148 -- 2012-04-15
20:53:10,456 INFO  [myBean]  Before id:141 -- 2012-04-10
20:53:10,456 INFO  [myBean]  Before id:147 -- 2012-04-05

20:53:10,823 INFO  [myBean]  After id:147 -- Fri Apr 20 00:00:00 CEST 2012
20:53:10,823 INFO  [myBean]  After id:148 -- 2012-04-15
20:53:10,823 INFO  [myBean]  After id:141 -- 2012-04-10