Sto cercando di spostare un p:dialog
da un h:form
, perché ho letto che questo è il modo migliore (però mi piacerebbe capire il motivo, perché la mia p:dialog
all'interno di un form
funziona bene in la mia applicazione).f: setPropertyActionListener non invocato
L'unica difficoltà è che il titolo della finestra di dialogo deve essere aggiornato dinamicamente. La finestra di dialogo viene visualizzata quando si fa clic su un pulsante in p:dataTable
.
Ecco il mio vecchio xhtml (prima che le modifiche), che sta lavorando bene:
<p:dataTable var="event" value="#{eventBean.lazyModel}" selection="#{eventBean.selectedEvent}" />
...
<p:column headerText="#{msgs.Persons}">
<p:commandButton value="#{msgs.ViewPersons}" update=":viewPersonsForm" oncomplete="viewPersonsDlg.show()">
<f:setPropertyActionListener value="#{event}" target="#{eventBean.selectedEvent}" />
</p:commandButton>
</p:column>
</p:dataTable>
<h:form id="viewPersonsForm">
<p:dialog modal="true" widgetVar="viewPersonsDlg" dynamic="true" header="#{eventBean.selectedEvent.name}" >
...
</p:dialog>
</h:form>
Ed ecco la nuova xhtml, con eventBean # setSelectedEvent() che non viene invocato.
<p:dataTable var="event" value="#{eventBean.lazyModel}" selection="#{eventBean.selectedEvent}" />
...
<p:column headerText="#{msgs.Persons}">
<p:commandButton value="#{msgs.ViewPersons}" update=":viewPersonsDlgId" oncomplete="jQuery('#viewPersonsDlgId .ui-dialog-title').text('#{eventBean.selectedEvent.name}');viewPersonsDlg.show()">
<f:setPropertyActionListener value="#{event}" target="#{eventBean.selectedEvent}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:dialog modal="true" id="viewPersonsDlgId" widgetVar="viewPersonsDlg" dynamic="true" >
...
</p:dialog>
Così, ancora una volta, perché nel secondo scenario eventBean # setSelectedEvent() non è invocato? E, se possibile, perché il primo scenario non è ottimale?
Grazie per i link. Sfortunatamente il setter non viene licenziato neanche con il tuo setup. – perissf
L'ho provato e funziona bene. Se il setter non viene licenziato, allora una delle fasi del ciclo JSF non è riuscita. Aggiungi '' alla tua pagina e controlla gli errori. –
Fallup
Hai ragione, il problema è da qualche altra parte. Fammi investigare ulteriormente ... – perissf