4

私は両方を見たり使ったりしましたが、2 つの表現の違いは何かといつも疑問に思っていました。

${foo.bar()}

#{foo.bar()}

ジュエル中です。

手がかりはありますか?「$」と「#」をグーグルで検索するのは難しい....

4

1 に答える 1

4

機能的に${}は、取得のみを実行#{}できますが、 は値の取得と設定を実行できます。

詳細については、JSP EL、JSF EL、および統合 EL の違いを参照してください。

JavaEE チュートリアルを読む:

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

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

このSO answerも参照してください。

于 2013-07-10T15:56:35.447 に答える