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

时间:2012-04-26 15:35:21

标签: java ajax jsf-2 primefaces

我再次:-( p:calendarp:dataTable的一个奇怪问题:

<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>

bean中的方法是获取更新发生的正确元素(JSF p:calendar in p:dataTable: How to get the row of p:ajax dateSelect event),然后更新元素中的日期并重新排序list。可以在upDateCum方法结束时在bean中验证正确的排序和更新:

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

但是发生更改的表的行总是包含实际更改的值(参见图像),但现在应该属于另一行(因为重新排序)。

第三行中的日期(object.id = 147)已从05.04.12更改为20.04.12。更新后,更改日期位于第一个位置(这是正常的)。但第三行不包含id = 141的未更改日期,它保存新数据(20.04.12):

enter image description here

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

0 个答案:

没有答案