f: setPropertyActionListener nicht aufgerufen

Ich versuche mich zu bewegenp:dialog aus einemh:form, weil ich gelesen habe, dass dies der bevorzugte Weg ist (allerdings möchte ich den Grund verstehen, weil meinp:dialog in einemform funktioniert gut in meiner Anwendung).

Die einzige Schwierigkeit besteht darin, dass der Dialogtitel dynamisch aktualisiert werden muss. Der Dialog wird angezeigt, wenn eine Schaltfläche in ap:dataTable angeklickt wird.

Hier ist mein altes xhtml (vor den Änderungen), das funktioniert gut:

<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>

Und hier ist das neue xhtml mit eventBean # setSelectedEvent (), das nicht aufgerufen wird.

<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>

Warum wird eventBean # setSelectedEvent () im zweiten Szenario nicht aufgerufen? Und wenn möglich, warum ist das erste Szenario nicht optimal?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage