-新しい式エンジン
式エンジンAPIが新しくなりました。とりあえずJSR245がきちんとなれば、JSR245の式エンジンにも対応できるというように考察を重ね、しかーしOGNL。普通のは動きます。
今、デバッグ中なのは、以下のような式。
${ model.method(namedObject) }
メソッドの引数内で、リテラル・変数はOKですが、式のモデル木をウォークして二度目にルートオブジェクトに対応したPropertyAccessorで行う「namedObject」の解決で、解決に行く前に、ルートオブジェクトがなくなっていてNG。これが、
${ model.method() } ${ model.method(#variable) } ${ model.method(123) } ${ namedObject }
はOK(引数無し・引数が変数・引数がリテラル・単なる名前解決)。なんだろうなぁ。
追記
できたー。原因はDefaultExecutionEnvironment#setRootObject()をしっかり叩いておかないと、Expression#getvalue()の第二引数にルートオブジェクトを渡すだけではダメということです。モデル木をウォークするうちにわすれっちゃうんだな。と、いずれドン引きセミナーにてOGNLエンジンの使い方を話す機会があったら解説しましょう(笑。