コンテキストの意味を理解するため、次のメソッドを使ってみる。
サンプルコードは次の通り。
Ognl#getValue(java.lang.Object tree, java.util.Map context, java.lang.Object root)
で、実行すると…
import ognl.*;
import java.util.*;public class OgnlSample
{
public static void main(String[] args) {
try {
// コンテキストを生成。
OgnlContext context = new OgnlContext();// オブジェクトを生成。
Map foo = new HashMap();
foo.put("hoge", "hogehoge");
Map bar = new HashMap();
bar.put("hoge", "hogera");// オブジェクトをコンテキストに格納。
context.put("foo_key", foo);
context.put("bar_key", bar);Object value = Ognl.getValue("foo_key", (Map) context, (Object) null);
System.out.println(value);
Object value2 = Ognl.getValue("bar_key.hoge", (Map) context, (Object) null);
System.out.println(value2);
} catch (Exception e) {
e.printStackTrace();
}
}
}
…失敗。プロパティ名をそのまま書くと、ルートオブジェクトのプロパティにアクセスするみたい。
ognl.OgnlException: source is null for getProperty(null, "foo_key")
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1611)
...
ので修正。
で、結果。
foo_key→#foo_key
bar_key→#bar_key
期待したとおりの結果。
{hoge=hogehoge}
hogera