0

@RequestScoped Bean の値に基づいて計算される「レンダリング」された commandLink があります。commandLink は f:ajax を使用してリスナーを呼び出しますが、メソッドが実行されないようです。

render="#{true}" を設定するか、rendered 属性をまったく設定しないと、リスナーが適切に実行されることがわかりました。レンダリングが ajax ポストバックの時点で存在しなくなったリクエストスコープの値に基づいているため (したがって「false」になる)、リスナーがスキップされている可能性はありますか? f:ajax は、正常に実行されるいくつかの実行アクションも実行することに注意してください。

4

1 に答える 1

2

リクエスト スコープ Bean を使用して、UI コンポーネントのレンダリングされた属性の値を定義しないでください。特別な注意を払わない限り、元の Bean は破棄されて値が失われ、代わりにリクエストごとに新しい Bean が作成されます。したがって、レンダリングされた属性値が次のリクエストで true と評価されない可能性が高いため、コンポーネントは非表示になります。

Bean の代わりにビュー スコープを使用する必要があります。ここで例を参照してください'jsf rendered attribute request scope bean'

于 2012-12-03T08:45:05.977 に答える