f: setPropertyActionListener nie został wywołany
Próbuję się przenieśćp:dialog
z ah:form
, ponieważ przeczytałem, że jest to preferowany sposób (jednak chciałbym zrozumieć powód, ponieważ mójp:dialog
wewnątrz aform
działa dobrze w mojej aplikacji).
Jedyną trudnością jest to, że tytuł okna dialogowego musi być dynamicznie aktualizowany. Okno dialogowe jest wyświetlane, gdy przycisk wp:dataTable
jest kliknięty.
Oto mój stary xhtml (przed zmianami), działa dobrze:
<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>
A oto nowy xhtml, z eventBean # setSelectedEvent (), który nie jest wywoływany.
<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>
Więc znowu, dlaczego w drugim scenariuszu eventBean # setSelectedEvent () nie jest wywoływany? A jeśli to możliwe, dlaczego pierwszy scenariusz nie jest optymalny?