• OGNL表达式


    1,什么是OGNL:

      OGNL的全称是对象图导航语言,它是一种功能强大的开源表达式语言,使用这种表达式语言

      可以通过某种表达式语法,存取Java对象的属性,调用Java对象的方法,同时能自动实现必要的类型转换

    2,特点:

      支持对象方法调用

      支持类静态方法调用和值访问

      支持赋值操作和表达式串联

      操作集合对象

      访问OGNL上下文

    3,要点:

      表达式

      根对象

      Context 对象

        设置了根对象,OGNL可以对根对象进行取值或写值,根对象所在的环境就是OGNL上下文环境

        上下文Context是个Map类型的对象,在表达式种访问Context对象,需要使用“#”加上对象名称,即“#对象名称”的形式

    实例代码:

      创建3个类

      

      

      

       测试类:

        

    public class strutsTest {
        @Test
        public void test1() throws OgnlException {
            Branch branch=new Branch();
            branch.setBranchId("张三");
            Group group=new Group();
            group.setBranch(branch);
            User user=new User();
            user.setGroup(group);
            user.setUsername("李四");
            Map map=new HashMap();
            map.put("u", user);
            // 用java导航访问
            System.out.println("branchId:"+user.getGroup().getBranch().getBranchId());
            /*
             * 使用OGNL访问getValue(参数1,参数2) 参数1:参数1是表达式 表达式是整个OGNL的核心
             * OGNL会根据表达式去对象中取值  所有的OGNL操作都是针对表达式解析后进行的  
             * 参数2:根对象User包括Group包括Branch
             * 
             */
            System.out.println("branchId:"+Ognl.getValue("group.branch.branchId", user));
            System.out.println("username:"+Ognl.getValue("#u.username",map,user));
        }
        @Test
        public void test2() throws OgnlException
        {
            User user = new User();
            
            Group group = new Group();
            group.setName("王五");
            
            user.setGroup(group);
            System.out.println("groupName:"+Ognl.getValue("getGroup().getName()", user));
        };
    
    }
  • 相关阅读:
    最小二乘拟合(scipy实现)
    接口实例
    类的继承:员工和老板
    设计模式(Design Patterns)
    创建类
    面向对象1
    java随机数:彩票抽奖 + 验证码
    判断字符串中字符出现的次数+去除空格
    输出二维数组所有元素的和
    输出 一维数组中最大的数+数组遍历
  • 原文地址:https://www.cnblogs.com/yz-bky/p/12626574.html
Copyright © 2020-2023  润新知