0

ap:dialog one 内に ap:calendar コンポーネントがあります。ダイアログが表示されると、バック Bean のプロパティから値が取得されますが、新しい日付が選択されると、リスナーに到着した SelectEvent は、新しく選択された日付ではなく、古い値をもたらします。次のコードで何が間違っていますか?

   <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呼び出しですでにlistnerを呼び出しているのに、なぜ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>

ゲッター/セッターを設定する必要があり、使用できるbeginnメソッドを呼び出すときに、新しい日付が得られると確信しています。"reclacDate()"beginn

于 2013-05-08T11:05:10.023 に答える
-1

これは古いバージョンの PrimeFaces に問題があるようです。これは、PrimeFaces 3.3 または 3.3.1 で修正されています。新しいバージョンにアップグレードしてみてください。

于 2013-10-17T17:13:31.970 に答える
-1

これp:calendarh:form?の中にあります。

まったく同じ問題があり、これを忘れていたことに気付きました

于 2014-01-28T13:02:13.407 に答える