0

我又遇到了:-(一个奇怪的问题,p:calendar里面有一个p: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重新排序。可以在方法末尾的 bean 中验证正确的排序和更新upDateCum

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

在此处输入图像描述

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

4

0 回答 0