password - primefaces p spinner
p: valor de calendario no actualizado con dateSelect (4)
Tengo ap: componente de calendario dentro de ap: dialog one. Cuando se muestra el cuadro de diálogo, toma su valor de la propiedad en back bean, pero cuando se selecciona una nueva fecha, SelectEvent llegó al oyente y trae el valor anterior y no la nueva fecha seleccionada. ¿Qué está mal en el próximo código?
<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()+" +++++++++++++++++++++++++++++++++++++++++");}
Estás haciendo esto de la manera incorrecta, a complicado.
Eche un vistazo aquí:
<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>
Necesitas configurar getter / setter para beginn
y cuando llamas al método "reclacDate()"
puedes usar beginn
y estoy bastante seguro de que tendrás la nueva fecha.
Este p:calendar
está dentro de una h:form
?
Tuvimos exactamente el mismo problema y notamos que habíamos olvidado esto
Esto parece ser un problema con las versiones anteriores de PrimeFaces. Esto ha sido arreglado en PrimeFaces 3.3 o 3.3.1. Intenta actualizar a una versión más nueva.
No sé por qué está utilizando valueChangeListener="#{schedulePFController.cambiaHoraComienzoVCL}"
en p:calender
cuando ya está invocando un listner en su llamada ajax.
Simplemente elimine valueChangeListener="#{schedulePFController.cambiaHoraComienzoVCL}"
de su p:calender
y luego check.listener listener="#{schedulePFController.cambiaHoraComienzo}"
que esté utilizando en p:ajax
etiqueta p:ajax
es suficiente