我想在p:calendar
. 在我的设置中,我有一个@Named @ViewScoped
Bean,该类ObWithDate
是一个@Entity
带有 date 字段validFrom的类。
<h:form id="fUser">
<p:dataTable id="dt" var="cum" value="#{myBean.listObWithDates}">
<p:column>
<p:calendar id="cValidFrom" value="#{cum.validFrom}">
<p:ajax event="dateSelect" listener="#{myBean.update(cum)}"
update=":fUser:dt"/>
</p:calendar>
</p:column>
</p:dataTable>
</h:form>
update(ObWithDate myO)
好消息是,每次我选择日期时,都会使用正确的对象调用bean 方法。不好的是,它myO.validFrom
没有正确的值。它总是落后一步:
- 用 2012-01-01 初始化的字段
- GUI 更改为 2012-01-05,bean 方法调试到 2012-01-01
- GUI 更改为 2012-01-15,bean 方法调试到 2012-01-05
这个问题让我发疯,我发现了几个未正确更新值的问题,还有一些关于p:calendar
. 他们中的大多数人建议将属性selectListener="#{calendarBean.handleDateSelect}"
与 handleDateSelect(DateSelectEvent event)
方法一起使用。但我想调用我的方法,因为我想传递变量的当前实例。
- Firebug 验证,正确的更新值在 POST 请求中传输
- 我正在使用 Primefaces 3.2 和 JBoss-7.1.1-Final
- 即使没有
p:dataTable
并且仅使用p:calendar
该问题仍然是相同的。 - 对于 method-Object以及 中的相应条目,可以观察到调试输出的错误值。
update(ObWithDate myO)
myBean.listObWithDates
<p:ajax immediate="true" .../>
不能解决这个问题。
更新MattHandy对我帮助很大,产生的问题How to get the对应的list item in the ajax call inside the beans method? 在后续JSF p:calendar in p:dataTable: How to get the row of p:ajax dateSelect event中制定。