唯一の難点は、ダイアログタイトルを動的に更新する必要があることです。 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>
そして、ここではeventBean#setSelectedEvent持つ新しいXHTMLは、(ある)が呼び出されません。
<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()が呼び出されないのでしょうか?可能であれば、最初のシナリオが最適でない理由は何ですか?
を推測リンクありがとう。残念なことに、セッターはセットアップしても起動しません。 – perissf
私はそれをテストして正常に動作しています。設定者があなたのために起動されない場合、JSFサイクルフェーズの1つが失敗しました。ページに ''を追加し、エラーをチェックしてください。 –
Fallup
あなたは正しいです、問題はどこか他のところです。私はさらに調査してみましょう... – perissf