1

「 Java Server Faces 2.0 - The Complete Reference」の「EL:Deferrred と Immediate Expressions の進化の調査」という名前のセクションの「マネージド Bean と JSF 式言語」という名前の第 5 章で、著者は次のように書いています。

即時評価は JSP には最適ですが、JSF にはそれ以上のものが必要でした。JSF では、リクエスト処理ライフサイクル (第 3 章で説明) が導入されました。これは、フォームが送信されたとき (ポストバック) に何が起こるかを制御します。ポスバック中、ポストバックされるマークアップをレンダリングした JSP ページは不明であり、JSF ランタイムでは使用できません。したがって、そのページ内の式は、ページがレンダリングされるとすぐに評価されるため、使用できません。

作成者が「ポスバック中に、ポストバックされているマークアップをレンダリングした JSP ページがわからない」と言っているのはなぜですか? これは、JSP ビュー定義テクノロジによって記述されたビューを復元する JSF ライフサイクルの復元ビュー フェーズの正確な責任ではないでしょうか。

4

1 に答える 1

2

いいえ、著者は、${}EL式参照をプログラムで/個別に評価するためにプログラムでEL式参照を見つける方法がないことを意味しています。JSF コンポーネント ツリーが JSP 出力に基づいて構築されると、それらは JSP エンジンによってすでに評価されています。${}JSF コンポーネント ツリーには EL 式への参照はありません。EL 式は#{}JSP エンジンによって認識されないため、JSP エンジンによって直接評価されません。このようにして、JSFはそれらを見つけてValueExpression参照に変換できます。これにより、特にgetValue()およびsetValue().

だから、あなたが持っていると想像してください

<h:inputText value="${bean.input}" />

その後、ビューの作成時に${}JSP エンジンによってすぐに評価され、value 属性は(getter によって取得された) 評価済みの値になります。JSF コンポーネントの値は、評価の結果である「リテラル」値のみを表すことになります。ポストバックでモデル値を設定できるようにするために、元の EL 式全体を見つける方法はありません。

于 2012-10-28T12:45:33.490 に答える