zoukankan      html  css  js  c++  java
  • (补充)9.Struts2中的OGNL表达式

    OGNL表达式概述

    1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写
        * 所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象
        * 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性
    
    2. Struts2框架使用OGNL作为默认的表达式语言
        * OGNL是一种比EL强大很多倍的语言
        * xwork提供 OGNL表达式
        * ognl-3.0.5.jar
    
    3. OGNL 提供五大类功能
       * 支持对象方法调用
       * 支持类静态的方法调用和值访问
       * 访问OGNL上下文(OGNL context)和ActionContext
       * 支持赋值操作和表达式串联
       * 操作集合对象
    
    4. 测试的代码
        // 访问对象的方法
        @Test
        public void run1() throws OgnlException{
            OgnlContext context = new OgnlContext();
            // 获取对象的方法
            Object obj = Ognl.getValue("'helloworld'.length()", context, context.getRoot());
            System.out.println(obj);
        }
    
        // 获取OGNL上下文件的对象
        @Test
        public void run3() throws OgnlException{
            OgnlContext context = new OgnlContext();
            context.put("name", "美美");
            // 获取对象的方法
            Object obj = Ognl.getValue("#name", context, context.getRoot());
            System.out.println(obj);
        }
    
        // 从root栈获取值
        @Test
        public void demo3() throws OgnlException{
            OgnlContext context = new OgnlContext();
            Customer c = new Customer();
            c.setCust_name("haha");
            context.setRoot(c);
            String name = (String) Ognl.getValue("cust_name", context, context.getRoot());
            System.out.println(name);
        }

    在Struts2框架中使用OGNL表达式

    1. Struts2引入了OGNL表达式,主要是在JSP页面中获取值栈中的值
    2. 具体在Struts2中怎么使用呢?如下步骤
        * 需要先引入Struts2的标签库
            > <%@ taglib prefix="s" uri="/struts-tags" %>
    
        * 使用Struts2提供的标签中的标签
            > <s:property value="OGNL表达式"/>
    
    3. 在JSP页面使用OGNL表达式
        * 访问对象方法
            <s:property value="'hello'.length()"/>
  • 相关阅读:
    学习笔记|数组的扩展
    javascript日期 时间处理类库
    v-if v-for同时使用 解决eslint报错问题
    跳出foreach循环
    live-player live-pusher惨案
    TypeError: Object(…) is not a function
    实现垂直水平居中的方法
    面试时候遇到的笔试题
    ajax跨域
    Bootstrap响应式相关
  • 原文地址:https://www.cnblogs.com/NEWHOM/p/6790037.html
Copyright © 2011-2022 走看看