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>
では、繰り返しになりますが、2番目のシナリオでeventBean#setSelectedEvent()が呼び出されないのはなぜですか?そして、可能であれば、なぜ最初のシナリオが最適ではないのですか?