1

これが私の問題です:

  • バッキングビーンは@SessionScoped
  • 私はselectionModeをsingleに設定しp:dataTableselectionを持っています #{bean.selectedCar}
  • テーブルの最初の列は、ダイアログを更新するcommandLinkです:detailDialog、oncompleteはダイアログを表示し、Beanの一部のプロパティをクリアする必要があるactionListenerを持っています
  • f:setPropertyListener価値#{item}と目標があります#{bean.selectedCar}

ユーザーがリンクをクリックしてダイアログに行のオブジェクトの情報が表示されるようにしたいのですが、これはdataTableの行が最初に選択された場合にのみ機能します。行が選択されておらず、ユーザーがcommandLinkをクリックした場合、NULLがに渡されbean.selectedCar、ページがハングします。

回避策として、少なくともdataTableの最初の行を事前に選択できるようにしたいと思います。うまくいけば、これでうまくいくでしょう。

4

2 に答える 2

1

f:setPropertyListenerコマンドリンクでを再利用できます。

<p:commandLink value="show" 
               actionListener="#{bean.doSomething}" 
               oncomplete="dialog.show()">
    <f:setPropertyListener value="#{item}" target="#{bean.selectedCar}"/>
</p:commandLink>

または(dataTableを反復処理しているため)、現在の#{item}オブジェクトを<p:commandLink.../>:に渡すことができます。

<p:commandLink value="Show" 
               action="#{bean.selectThisCar(item)}" 
               oncomplete="dialog.show()"/>
于 2012-10-30T13:16:37.470 に答える
1

答えてくれてありがとう@akoskm。最初のバリエーションは、ボタンに使用したものです。私の問題は、(2番目のオプションとして)このメソッドがdataTableの選択オプションと競合することでした。selection="#{bean.selectedCar}"パラメータからを削除することp:dateTableは、私の問題の解決策でした。助けてくれてありがとう。

于 2012-10-30T13:55:09.790 に答える