ognl表达式

OGNL(Object Graphic Navigation Language)对象图导航语言。Struts2框架使用ognl作为默认的表达式语言。

  作用:取值,获取JavaBean中的属性,获取List或者数组元素,获取Map的键值对,还可进行逻辑运算

一、ognl对普通方法的调用

  <s:properties value = "   " /> “ ” 内部是ognl表达式   value中字符串需要用单引号,可以使用API

二、ognl对静态变量和静态方法的调用

  如果时静态方法,首先都要开启静态使用,在struts.xml中配置   <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>

  调用时 使用   @类的全路径@[静态变量或者静态方法]    <s:property value="@java.lang.Math@abs(-100)"/>

三、ActionContext

       其中包含两个部分,一个是StackValue   一个是contextMap:application、session、request、action、parameters、attr

  1、在contextMap中存储数据

    先根据ServletActionContext获取到ActionContext对象ac.   ac.put(String name  , Object obj  );

     //获得动作类的上下文ActionContext包含了contextmap和valuestack
        ActionContext ac = ServletActionContext.getContext();
        //在contextmap中存储数据,默认的相当于request,因为ActionContext的生命周期和request一样都是一次请求
        ac.put("name", "zhangsan");
     //把数据存储在会话范围
        ac.getSession().put("user", "李四");

   在页面中取数据  <s:property value="#name"/>    <s:property value="#session.user"/>

   2、在值栈中存取数据

    请求传递的参数存储在值栈中,同事把Action对象也压入栈中,属性对象在上,Action对象在下,所有对象的值既可以从栈顶取出,也可以通过Action对象中的属性取出

  

原文地址:https://www.cnblogs.com/cat-fish6/p/8648513.html