这两天在学习Struts2,看ONGL时始终提到Root和Context,搞不清这两个到底有什么关系,查阅了一系列文章之后,似乎有所感悟,如有不正确的地方,还请各位指教。
ONGL使用Map来存储对象,在你不指定Map时,它会调用addDefaultContext 方法自动创建一个Map来存储你传进来的对象,而这个Map就是所谓的Root。那么我已经有一个Map了,如何通过ONGL来访问呢?ONGL允许你指定Map,但是你通过ONGL访问你指定的Map时,要在表达式前面加上“#”(不含引号),你所指定的这个Map,就是所谓的Context。Root和Context的关系有点像自己家的和外来的关系一样,当然这里的自己是对ONGL而言的。
看如下代码:
1.Teacher.java
2.MyOgnl.java
结果:
Matched
t1,t2即是预设变量(外来的),上面的表达式通过#引用了ctx中的预设变量.而t(自家的)的引用直接写属性名就可以了.
代码来自:http://blog.csdn.net/csdn1234/archive/2008/12/04/3443374.aspx