Java JSF p:p:dataTable中的日历:在AJAX之后未正确更新
我又遇到了:-p:dataTable中的p:calendar出现了一个奇怪的问题: 但发生更改的表的行始终包含实际更改的值(请参见图),但由于重新排序,现在应该属于另一行 第三行object.id=147中的日期从2012年4月5日更改为2012年4月20日。更新后,更改日期位于第一个位置,这是确定的。但第三行不包含id=141的未更改日期,它保存了新数据20.04.12: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方法后覆盖了该值。您最好使
有趣的是: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