【发布时间】:2013-05-08 10:10:03
【问题描述】:
我在 p:dialog 中有一个 p:calendar 组件。 When dialog is shown it takes its value from property in back bean, but when a new date is selected, the SelectEvent arrived to the listener brings the old value and not the new selected date.下一个代码有什么问题?
<p:dialog id="eventDialog" widgetVar="eventDialog" header="#{textos.confirmarFechaHora}" showEffect="clip"
hideEffect="clip" modal="true"
appendToBody="true"> <!-- A false, no entran los eventos tras modificar la fecha/hora del calendario -->
<h:panelGrid id="eventDetails" columns="2">
<h:outputLabel for="calHora" value="#{textos.horaComienzo}" />
<p:calendar id="calHora" locale="es" pattern="dd/MM/yyyy HH:mm"
value="#{schedulePFController.fechaComienzo}" mode="inline"
required="true"
accesskey="true" valueChangeListener="#{schedulePFController.cambiaHoraComienzoVCL}">
<p:ajax event="dateSelect" listener="#{schedulePFController.cambiaHoraComienzo}"/>
</p:calendar>
<p:commandButton value="#{textos.cancelar}" oncomplete="eventDialog.hide();"/>
<p:commandButton value="#{textos.mostrarCitas}"
action="#{schedulePFController.verEntradaCalendario}"
rendered="#{schedulePFController.clickedOnCita}"/>
<p:commandButton value="#{textos.addCita}"
action="#{schedulePFController.addCita}"
rendered="#{!schedulePFController.clickedOnCita}"/>
</h:panelGrid>
public void cambiaHoraComienzo(SelectEvent ev) {
Date date = (Date)ev.getObject();
fechaComienzo = date;
horaComienzo = new DateCita(date);
logger.debug("Cambiando fechaComienzo "+horaComienzo.toString()+" +++++++++++++++++++++++++++++++++++++++++");}
【问题讨论】:
-
你有没有用任何默认值初始化
SchedulePFController属性fechaComienzo? -
哦,我刚刚看到
valueChangeListener="#{schedulePFController.cambiaHoraComienzoVCL}"在这里你正在调用另一个方法,你正在寻找cambiaHoraComienzo方法的价值?你在做什么? -
从您的
p:calender中删除valueChangeListener="#{schedulePFController.cambiaHoraComienzoVCL}",然后检查您在p:ajax标签中使用的listener="#{schedulePFController.cambiaHoraComienzo}"就足够了 -
这似乎是旧版本 PrimeFaces 的问题。这已在 PrimeFaces 3.3 或 3.3.1 中修复。尝试升级到新版本。
-
我也有同样的问题,无法升级大项目...
标签: primefaces calendar