f:setPropertyActionListener не вызывается

Я пытаюсь переместить p:dialogиз h:form, потому что я читал, что это предпочтительный способ (однако я хотел бы понять Причина в том, что мой p:dialogвнутри formхорошо работает в моем приложении).

Единственная трудность заключается в том, что заголовок диалога должен обновляться динамически. Диалоговое окно отображается при нажатии кнопки в p:dataTable.

Вот мой старый xhtml (до изменений), который работает нормально:

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

А вот новый xhtml с eventBean#setSelectedEvent(), который не вызывается.

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

Итак, опять же, почему во втором сценарии не вызывается eventBean#setSelectedEvent()? И если возможно, то почему первый сценарий не оптимален?

5
задан perissf 16 May 2012 в 19:03
поделиться