f: setPropertyActionListener no invocado
Estoy tratando de mover unp:dialog
fuera de unh:form
, porque he leído que esta es la forma preferida (sin embargo, me gustaría entender la razón, porque mip:dialog
dentro de unaform
funciona bien en mi aplicación).
La única dificultad es que el título del diálogo debe actualizarse dinámicamente. El diálogo se muestra cuando un botón en unp:dataTable
se hace clic.
Aquí está mi antiguo xhtml (antes de los cambios), está funcionando bien:
<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>
Y aquí está el nuevo xhtml, con eventBean # setSelectedEvent () que no se invoca.
<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>
Entonces, de nuevo, ¿por qué en el segundo escenario no se invoca eventBean # setSelectedEvent ()? Y, si es posible, ¿por qué el primer escenario no es óptimo?