0

バッキング Beanに がArrayListあり、JSF ページでのレンダリングがc:forEach. 要素をインデックスで削除するArrayListと、インデックスが何であれ、jsf は常に最後の要素を削除します。なぜこれが起こるのですか?

JSFの削除ボタンは次のとおりです。

<a4j:commandButton immediate="true" action="#{bean.removeEntry}" ...

だから私は即時属性を使用します。問題は、JSF ライフ サイクルの Apply リクエスト フェーズをすぐにスキップするためだと思います。可能です?

はいの場合、この場合、リクエストの適用フェーズをどのように実行しますか?

4

3 に答える 3

1

Facelets (.xhtml ページ) を使用していますか? もしそうなら、あなたは のような JSTL タグについていくつかの一般的な誤解に遭遇しているかもしれません<c:foreach>. これに関する良い記事は次のとおりです。

https://rogerkeays.com/jsf-c-foreach-vs-ui-repeat

基本的<c:foreach>に、ビューが最初に構築されたときにのみ処理されます。コンポーネント ツリーの一部にはならず、バッキング コレクションが変更されたときに予期しない動作が発生する可能性があります。<ui:repeat>代わりに使用した方がよい場合があります。

于 2012-02-09T21:17:11.190 に答える
0

もう少しコードがあれば役に立ちますが、アクション リスナーまたはアクションが適用リクエスト フェーズ (通常はキャンセル ボタン) で実行されるため、コマンド ボタンの即時操作は基本的に現在のページから移動するために使用されます。これは、そこで更新された値を取得できないことを意味します。ロジックが他の uiinput に依存している場合は、それをすぐに作成し、valuechangelistener にフックすることができます。

しかし、あなたが達成しようとしていることをより良い方法で行うことができるとは思えません。このリンク @ SOを見てください。

于 2012-02-03T12:36:41.773 に答える