-式言語の囲い記号

なぜJSFが#{}で囲われて、JSP2.0が${}で囲われるのかが、風呂に入ってたときにおぼろげにわかりました。JSP2.0ではタグの属性だけでなく、どこでも${}で囲うと式言語ブロックになるじゃないですか(って今日知ったんだけど)。ということは、その式言語をJavaのコードに変換するもしくは評価器に式を渡すコードを書くのは、JSPプリプロセッサなのですね、おそらく。でも、JSFはそこで評価されるんではなく、Application#create**Binding()に渡して後、評価器に突っ込まれるわけです、たぶん。
ということなら、ナナシナーのプリプロセッサでは#{}に統一できます。#{}以外で統一するとJSFがとおらないですが、${}がJSPプリプロセスの中で${}囲いをはずしてJavaのソースに埋め込む対象となっているのだろうから、ナナシナーはそこで#{}が来るものだと思って判断すればいいわけですね。POHPの操を守るためにタグ属性の中にのみ(エレメントボディでの仕様を許さないで)式言語を許すとすれば、タグの名前空間によってJSFのcoreライブラリおよびhtmlライブラリでさえないと判断できたら、評価器にぶち込むソースにインライン展開すればいいのですから。
JSPJSFの仕様に配慮はしていないってことです。そりゃそうですね。JSPのほうが基礎だから。JSPプリプロセッサにいじらせたくなかったから、JSFが式言語囲いを変更したんだな。
この推論があってるとすれば、JSFの式言語を${}で囲っちゃうと、JSFのApplicationに渡る前に、JSPプリプロセッサのところで評価されちゃう可能性があります。どっちが先かは確かめてみないとわかんないのであくまで推論ですが。となるとやっぱりOGNLでいけるんだなあ。評価器に渡すところもプリプロセッサが握ってるってことだもの。明日の午後もう一度考えてみよう。
ということでおやすみなさい。3時30分になっちゃった。ねむねむ。明日も朝一番からぐるぐるマークのお客さんのところにお出かけ。