Próbuję przenieść p:dialog
się z h:form
, bo czytałem, że jest to preferowany sposób (jednak chciałbym, aby zrozumieć przyczynę, bo moja p:dialog
wewnątrz a także w pracach form
moja aplikacja).f: setPropertyActionListener nie powoływać
Jedyną trudnością jest to, że tytuł okna wymaga dynamicznej aktualizacji. Okno dialogowe jest wyświetlane po kliknięciu przycisku w kodzie p:dataTable
.
Oto mój stary xhtml (przed zmianą), które działa prawidłowo:
<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óra 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() jest wywoływana nie? I jeśli to możliwe, dlaczego pierwszy scenariusz nie jest optymalny?
Dzięki za linki. Niestety seter nie zostaje zwolniony nawet przy konfiguracji. – perissf
Przetestowałem to i działa dobrze. Jeśli setter nie został zwolniony za ciebie, to jedna z faz cyklu JSF nie powiodła się. Dodaj '' do swojej strony i sprawdź, czy nie ma błędów. –
Fallup
Masz rację, problem jest gdzie indziej. Pozwól mi zbadać dalej ... – perissf