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 () не вызывается? И, если возможно, почему первый сценарий не оптимален?