码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2 ONGL表达式

时间:2017-03-14 23:49:16      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:nbsp   static   arraylist   const   test   cti   方法   做了   功能   

OGNL是Object-Graph Navigation Language的缩写,是一种功能强大的表达式语言。

OGNL的引入

1.ognl访问数据,以下将几种获取方式做了示例:

Action类

    public String test(){
        //获取狭义上的值栈
        context=ActionContext.getContext();         
        ValueStack valueStack=context.getValueStack();
        valueStack.set("name", "张三(valueStack)中的");
        
        //获取广义上的值栈
        //获取reqeust中的
        Map<String, Object> reqeust=(Map<String, Object>) context.get("request");
        reqeust.put("name", "李四(reqeust)中的");
        
        //获取session中的数据
        Map<String, Object> session=context.getSession();
        session.put("name", "王五(session)中的");
        
        //获取session中的数据
        Map<String, Object> application=context.getApplication();
        application.put("name", "赵六(application)中的");
        
        return SUCCESS;
    }

JSP页面

<body>
获取侠义上的值栈数据: <s:property value="name" /><br>
获取广义上的值栈数据<br>
获取请求的参数数据:  <s:property value="#parameters.name" /><br>
获取reqeust中的数据: <s:property value="#request.name" /><br>
获取session中的数据: <s:property value="#session.name" /><br>
获取application中的数据: <s:property value="#application.name" /><br>

#attr 按照 page,reqeust,session,application顺序查找<br>
获取attr:<s:property value="#attr.name" />
</body>

显示结果

技术分享

2.ognl访问复杂对象:

Action类

public String test(){
        //访问javaBean对象
        student=new Students("张三","15");
        
        //访问对象集合
        list=new ArrayList<Students>();
        list.add(new Students("李四","集合成员一"));
        list.add(new Students("王五","集合成员二"));
        
        //访问map对象
        studentMap=new HashMap<String,Students>();
        studentMap.put("好学生", new Students("学霸","20"));
        studentMap.put("差学生", new Students("学渣","20"));
        return SUCCESS;
    }

JSP页面

<body>
OGNL访问javaBean对象:  <s:property value="student.name" /><s:property value="student.age" />岁了</br>
OGNL访问对象List集合:  <s:property value="list[0].name" /><s:property value="list[0].age" /><br>
                    <s:property value="list[1].name" /><s:property value="list[1].age" /><br>
OGNL访问对象Map集合:  <s:property value="studentMap[‘好学生‘].name" /><s:property value="studentMap[‘好学生‘].age" />岁了<br>
                    <s:property value="studentMap[‘差学生‘].name" /><s:property value="studentMap[‘差学生‘].age" />岁了<br>
                    <!-- [‘好学生‘]这里面是map中的key值 -->
</body>

显示结果:

技术分享

2.ognl访问静态属性和方法:

创建一个静态类:

package com.maya.ognl;

public class StaticOgnl {
    public static String str="Answer";
    
    public static String printStr(){
        str+="这是我的静态方法";
        System.out.println(str);        
        return str;
    }
}

JSP页面访问静态属性与方法:

<body>
OGNL访问静态属性: <s:property value="@com.maya.ognl.StaticOgnl@str" /><br>
                    <!-- @包名加类名 @属性名 -->
OGNL访问静态方法: <s:property value="@com.maya.ognl.StaticOgnl@printStr()" />
                    <!-- @包名加类名 @方法名() -->
</body>

显示结果:

技术分享

技术分享

 当访问静态方法与属性时,要在xml文件中配置一条语句,用来允许其调用。语句如下:

<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>

 

Struts2 ONGL表达式

标签:nbsp   static   arraylist   const   test   cti   方法   做了   功能   

原文地址:http://www.cnblogs.com/AnswerTheQuestion/p/6551306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!