Ognl的讲解

来源:互联网 发布:vue.js可视化表单设计 编辑:程序博客网 时间:2024/06/08 05:40

这里我要说的ognl,它主要是获取从一个集合中获取值,下面是代码实例

@Test    public void test01() {        try {            User u = new User(1,"xiaoer","小二");            Department dep = new Department("财务处");            u.setDep(dep);            //第二个参数是root            System.out.println(Ognl.getValue("nickname",u));            System.out.println(Ognl.getValue("dep.name",u));        } catch (OgnlException e) {            e.printStackTrace();        }    }

结果:这里写图片描述

@Test    public void test02() {        try {            Map<String,Object> map = new HashMap<String,Object>();            User u = new User(1,"xiaoer","小二");            Department dep = new Department("财务处");            u.setDep(dep);            map.put("user",u);            //以下表达式是在root中找,u是root            System.out.println("第一个:"+Ognl.getValue("username",map,u));            //#user.username是在map这个map中找            System.out.println("第二个:"+Ognl.getValue("#user.username",map,u));            //Ognl其实就是一个大的Context,根的key就是root,所以可以通过#root.xx来取值            System.out.println("第三个:"+Ognl.getValue("#root.username",map,u));            //这个#号只能用于对象前            System.out.println("第四个:"+Ognl.getValue("#username",map,u));        } catch (OgnlException e) {            e.printStackTrace();        }    }

这里写图片描述

public class User {    private int id;    private String username;    private String nickname;    private Department dep;    public int sum(int a,int b) {        return a+b;    }    public String hello(String word) {        return "hello "+word;    }    }@Test    public void test04() {        try {            List<User> users = new ArrayList<User>();            users.add(new User(1,"dg","大哥"));            users.add(new User(2,"eg","二哥"));            users.add(new User(3,"sg","三哥"));            users.add(new User(4,"sgd","四哥"));            //如果要取list中的元素,需要通过#root[index]来完成取值            System.out.println(Ognl.getValue("#root[1].nickname", users));            //Ognl还可以完成方法的调用            System.out.println(Ognl.getValue("#root[0].sum(1,3)", users));            User u  = new User();            System.out.println(Ognl.getValue("hello('world')", u));            //可以通过调用list中的get()方法获取某个下标的对象,然后完成导航            System.out.println(Ognl.getValue("get(0).username", users));        } catch (OgnlException e) {            e.printStackTrace();        }

结果:
这里写图片描述

0 0
原创粉丝点击