OGNL表达式及ognl与struts2的结合

一.ognl表达式

  1.ognl表达式跟el表达式都是对象视图导航语言,不过ognl比el在功能上更加强大,除了输出外,还可以为对象赋值,调用对象方法,调用静态方法等

  2.在EL中我们取值是从11个内置对象中获取,而我们的ognl是从ognlContext中来获取。

  3.ognlContext实质是一个map,这个map还分为两部分,root部分和context部分,root部分中可以任意类型的对象作为root对象,且root对象只能有一个;context部分说白也是map,你调用ognlContext对象的put存储键值对,其实是属于放在了context中,主要是为了区分root和context

二.如何从ognlContext对象中取值?

  1.可以调用Ognl.getValue(expression, ognlContext, root),参数一是表达式,参数二是ognlContext对象,参数三是ognlContext对象中的root对象

  2.如果想要获取root对象的属性,直接在表达式中写root对象的属性名,如:Ognl.getValue("name", ognlContext, root);

  3.如果想要获取context中的值,得再表达式的前面加一个#,如:Ognl.getValue("#key.name", ognlContext, root);key为键值对的键,#key就得到了值;

三.ognl如何设置属性值?

  1.给root对象设置属性值,表达式格式是"属性名=修改后的值",如:Ognl.getValue("name='王五'", ognlContext, root);

  2.给context中键值对的值对象设置属性,如:Ognl.getValue("#key.name='多佛朗', ognlContext, root);

四.ognl如何调用方法?

  1.调用root对象的方法,很简单,表达式直接写方法名即可,如:Ognl.getValue("getName()", ognlContext, root);如果调用的方法有返回值,则会有返回值返回

  2.context中调用值对象的方法,如:Ognl.getValue("#key.setName('大帅哥')", ognlContext, root);

五.ognl如何调用静态方法?

  1.调用静态方法,得在类名和调用的方法名前加@,结构为:@完整类名@方法名,如:Ognl.getValue("@java.lang.Math@PI", ognlContext, u1);

猜你喜欢

转载自www.cnblogs.com/ibcdwx/p/12734961.html
今日推荐