0

ユーザーが提供するいくつかのフィールド(主にp:inputText )を表示するデータ入力フォームがあります。これらの一部はLOVであるため、ユーザーが適切な値を選択できるようにp:dialogを表示します。p:dialogは、p:inputTextの横にあるp:commandLinkによって表示されます。以下に示すコードの主要部分:

<h:form id="parentForm">
    (...)
    <p:inputText value="#{CustomerCEVController.customer.municipality}" id="customerMncName"/>
    <p:commandLink type="button" onclick="MunicipalityDlg.show()" styleClass="ui-icon ui-icon-search"/>
    (...)
    <p:commandButton value="Submit"  id="save" actionListener="#{CustomerCEVController.saveButtonListener}" /> (...)
</h:form>

問題は、ユーザーがp:commandLinkをクリックしてp:dialogを表示する(値の1つを選択できるようにする)たびに、外部フォームがライフサイクルフェーズ(ビューの復元、リクエスト値の適用、プロセス検証など)を通過することです。 。)p:commandLinkh:form内に配置されているため。ユーザーが開くすべてのダイアログでh:formを投稿することを避けながら、このダイアログ表示機能を実装するにはどうすればよいですか?

4

2 に答える 2

1

onclickイベントハンドラーの最後のステートメントとして「returnfalse」を追加するだけです。commandLinkのデフォルト機能(フォームの投稿)を防ぎます。

于 2012-07-31T10:55:45.700 に答える
1

追加するだけで、appendToBody属性をtrueに設定できます<p:dialog>

<p:dialog header="Header Text" widgetVar="dlg" appendToBody="true">
   //Content
</p:dialog>

これにより、親フォームの外部にドキュメント本文の子としてダイアログが追加されます。

于 2012-07-31T14:36:44.887 に答える