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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta