0

私がやりたいことは、Primefaces ショーケース ( http://www.primefaces.org/showcase/ui/datatableRowSelectionByColumn.jsf ) での基本的な行選択の例のようなものです。データテーブルの行を更新したいと思います。問題は、データテーブルでボタンをクリックして更新すると、ダイアログボックスに検証エラーが表示されることです。

2 つ目は、メソッドの実行時間の順序です (action-update-onclick-f:setPropertyActionListener)。

<p:commandButton id="updateButtonId"
                                     action="#{myController.showCompanyEditPanel}"
                                     update=":tabView:companyForm:companyEditPanel"
                                     onclick="companyDialog.show()"                                         
                                     icon="ui-icon-pencil" title="update">  
    <f:setPropertyActionListener value="#{company}" target="#{myController.selectedCompany}" />  
</p:commandButton>


<p:dialog id="editCompanyDialogId" header="CompanyEdit" widgetVar="companyDialog" resizable="false">
    <p:panel id="companyEditPanel" >
    //some stuff here
    </p:panel>
</p:dialog>
4

1 に答える 1

1

hereを使用する主要なポイントが欠けている<p:commandButton>ようであり、クライアント側とサーバー側のイベントが混在しているようです。

最初に<p:commandButton>。このコンポーネントは、フォーム データを現在の URL に (部分的に) POST し、アクション (リスナー) メソッドでビジネス ジョブを実行し、更新されたコンポーネントを返したり、ナビゲーションを実行したりするように設計されています。もちろん、これらすべての属性に JavaScript イベントを「添付」できます。

2 番目、onclickoncomplete、およびその他のon...属性は、一部のクライアント側イベントに対応しています。具体的にonclickは、ボタンがクリックされたときに関数がトリガーoncompleteされ、AJAX 呼び出しの後に DOM が更新されたときに関数が呼び出さ<p:ajax update="...">update="..."ます<p:commandButton>

3 番目に、すべてのアクション リスナー (つまり、actionListener属性、<f:actionListener>タグ、<f:setPropertyActionListener>タグ) は、タグで指定された順序で正しく実行されます。詳細については、この回答を参照してください。最後に実行されるのはactionメソッドで、その後に応答が返されます。

于 2013-05-06T10:01:43.700 に答える