0

我在 ap:dialog 一中有 ap: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()+" +++++++++++++++++++++++++++++++++++++++++");}
4

4 回答 4

0

当您已经在 ajax 调用中调用侦听器时,我不知道为什么要使用valueChangeListener="#{schedulePFController.cambiaHoraComienzoVCL}"in 。 只需从您的然后 check.listener中删除您在标签中使用的就足够了p:calender
valueChangeListener="#{schedulePFController.cambiaHoraComienzoVCL}"p:calenderlistener="#{schedulePFController.cambiaHoraComienzo}"p:ajax

于 2013-05-08T10:18:26.047 回答
0

你这样做是错误的,很复杂。

看看这里:

        <p:calendar value="#{ivkDaten.beginn}" locale="de" lang="de"
            pattern="dd.MM.yyyy" label="#{messages['services.ivk.beginn']}:" 
            width="80" id="ivkbeginn" effect="fadeIn" readonlyInput="true" disabled="true"
            showOn="button" mindate="#{services.minDate}" maxdate="#{services.maxDate}">

            <p:ajax event="dateSelect" listener="#{ivkDaten.recalcDate()}"
                update="ablauf" />
        </p:calendar>

您需要设置 getter/setterbeginn并且当您调用"reclacDate()"可以使用的方法时beginn,我很确定您会有新的日期。

于 2013-05-08T11:05:10.023 回答
-1

这似乎是旧版本 PrimeFaces 的问题。这已在 PrimeFaces 3.3 或 3.3.1 中修复。尝试升级到较新的版本。

于 2013-10-17T17:13:31.970 回答
-1

p:calendar是里面的h:form

我们遇到了完全相同的问题,并指出我们忘记了这一点

于 2014-01-28T13:02:13.407 回答