jsfの#{expr}と$ {expr}の違いは何ですか? $ {expr}を優先すべき場合はありますか?

el jsf
jsfの#{expr}と$ {expr}の違いは何ですか? $ {expr}を優先すべき場合はありますか?

「Core JSF」の違いについて少し前に読みましたが、今ではその場所を見つけることができません。

それでも、jsfで$ \ {expr}を使用する必要がある場合についての言葉があったことを覚えていません。 それで、違いは何ですか(栗の場合)、JSFアプリケーションで$ \ {expr}を使用する場合があるのでしょうか?

  13  6


ベストアンサー

明確な言語で要約すると、 `$ {expression}`は* get のみを実行しますが、 `#{expression}`は get set *の両方を実行できます。 これは、 `$ {expression}`が1回(即時)だけ評価され、 `#{expression}`がアクセスごとに評価される(遅延)ためです。

JSP 2.0またはFacelets 1.xのJSFで、ページの最初の表現としてこのようなものを配置する場合

${bean.property}

「bean」はリクエストスコープのマネージドBeanです。_nothing_が表示されます。 しかし、 `bean`がセッションスコープのマネージドBeanであり、以前に既に作成されている場合、プロパティ値が出力されます。 これは、同じページ内で `#{bean.xxx}`によってリクエストスコープのマネージドBeanが以前に作成された場合にも適用されます。

代わりにページの最初の表現として行う場合

#{bean.property}

ELは `bean`がnullかどうかをテストし、nullの場合、新しいものを* set *(作成)します。 Beanの構築中にプロパティが設定されている場合、この式でプロパティが表示されます。

これはすべて、とりわけJSF http://java.sun.com/javaee/5/docs/api/javax/faces/component/UIInput.html [UIInput]コンポーネント(http:// javaなど)を取得するために必須です。 sun.com/javaee/javaserverfaces/1.2_MR1/docs/tlddocs/h/inputText.html [“]が機能します。 フォームを送信すると、 `#{expression}`はBeanの値を*設定*します。

25


_
$ \ {}構文を使用するすべての式はすぐに評価されます。 これらの式は、テンプレートテキスト内、またはランタイム式を受け入れることができるJSPタグ属性の値としてのみ使用できます。 […​]即時評価式は常に読み取り専用の値式です。 上記の式は、カートBeanから合計価格のみを取得できます。合計金額を設定することはできません。
_

_
遅延評価式は#\ {expr}の形式を取り、式を使用している技術によって定義されるページライフサイクルの他の段階で評価できます。 JavaServer Facesテクノロジーの場合、そのコントローラーは、ページで式がどのように使用されているかに応じて、ライフサイクルのさまざまな段階で式を評価できます。
_

9


タイトルとURLをコピーしました