JSF -P:Datatable -P:CommandButtonはP:列内でも動作しません
-
13-10-2019 - |
質問
データテーブル内にコマンドボタンがあります。ただし、クリックすると「アクション」は呼び出されません(ActionListenerと同じ効果)。サーバーアクションの先頭にログを追加しましたが、表示されません。データリストの外側でボタンは正常に動作することに注意してください。
これが私のコードです:
<h:form id="compSearchForm">
<p:dataTable var="competency" value="#{competencySearchBean.matchingCompetencies.toArray()}">
<p:column>
<f:facet name="header">
<h:outputLabel value="Title" />
</f:facet>
<h:outputText value="#{competency.title}" />
</p:column>
<p:column>
<p:commandButton value="Go" id="actionButton" action="#{myBean.doAction}" />
</p:column>
</p:dataTable>
</h:form>
問題が何であるかについて何か考えはありますか?
解決
beanをバックすることで、ダミーメソッドとともに、既存の私のボタン列コードを既存の列に追加しました。この方法は、ボタンを押すと正しく呼ばれます。正しく動作します。これが私のデータテーブルに追加したコードです:
<p:column>
<p:commandButton value="Go" id="actionButton" action="#{tableBean.buttonAction()}" />
</p:column>
これが私のバッキングビーンのボタンアクション方法です:
public void buttonAction()
{
int a = 0;
for(int i = 0; i < 100; i++)
a = i;
}
この方法にブレークポイントを置いたので、ボタンをクリックすると呼び出されていることがわかります。さらに一歩進んで、データソースを使用してデータテーブルコードを使用しましたが、ボタンを押すとメソッドが呼び出されています。どの開発環境を使用しているのかわかりませんが、デバッグモードがある場合は、ドゥアクション方法とBeanの他のいくつかの戦略的な場所にブレークポイントを置いてから、プロジェクトをデバッグモードで実行して、何が起こっているのかを確認してください。
他のヒント
私はあなたが変更しなければならないと思います:
<h:form id="compSearchForm">
<p:dataTable var="competency" value="#{competencySearchBean.matchingCompetencies.toArray()}">
<p:column>
<f:facet name="header">
<h:outputLabel value="Title" />
</f:facet>
<h:outputText value="#{competency.title}" />
</p:column>
</p:dataTable>
<p:commandButton value="Go" id="actionButton" action="#{myBean.doAction}" />
</h:form>
データテーブル内にボタンを入れることができるとは思いません。これを試して。
この例を参照 - http://www.primefaces.org/showcase/ui/datatablerowselectionbycolumn.jsf
IDをフォームIDでプレフィックスする必要があると思います
「display」のみの代わりに「更新」:フォーム:ディスプレイ「ディスプレイ」
私のために働いた
私は同じ問題を抱えていました、そして、別の方法を試した後、私は自分の初期化によってそれを解決しました List
(私が使用するリスト p:datatable
) の中に init
の方法 Bean
.
このフォームを使用すると、リストはいくつかの値でページに表示されます。
私が置いたときでさえ List<Paciente> myList = new ArrayList<Paciente>();
うまくいきませんでした。リストにいくつかの値を入れる必要があります。それが問題を解決した唯一の方法でした。