Ognl的对象导航语言相关用法

第一种:
定义一个javaBean对象
***User.java***
package org.zttc.itat.model;
public class User {

    private String id;
    private String username;
    private String nickname;
    public User(String id, String username, String nickname) {
        super();
        this.id = id;
        this.username = username;
        this.nickname = nickname;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
    public User() {
        super();
    }

}

测试类
    @Test
    public void test01() {
        try {
            User u = new User("1","唐僧","Tony");
            //第一个参数是对象属性,第二个参数是根
            System.out.println(Ognl.getValue("id", u));
        } catch (OgnlException e) {
            e.printStackTrace();
        }
    }
第二种:在第一种基础上User新增部门属性
***Department.java***
package org.zttc.itat.model;
public class Department {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Department() {
        super();
    }

    public Department(String name) {
        super();
        this.name = name;
    }
}

***User.java***
新增department属性
package org.zttc.itat.model;
public class User {

    private String id;
    private String username;
    private String nickname;
    private Department dep;
    public Department getDep() {
        return dep;
    }
    public void setDep(Department dep) {
        this.dep = dep;
    }
    public User(String id, String username, String nickname) {
        super();
        this.id = id;
        this.username = username;
        this.nickname = nickname;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
    public User() {
        super();
    }
}

测试类
@Test
    public void test01() {
        try {
            User u = new User("1","唐僧","Tony");
            Department dep = new Department("财务处");
            u.setDep(dep);
            //第一个参数是对象属性,第二个参数是根也指对象
            System.out.println(Ognl.getValue("username", u));
            //第一个参数表示在部门中的name
            System.out.println(Ognl.getValue("dep.name", u));
        } catch (OgnlException e) {
            e.printStackTrace();
        }
    }

导航信息表:
   u
    --id
    --username
    --password
    --dep
       --name
第三种:(把对象放入Map中)沿用第二种方法
新增Role对象
***Role.java***
package org.zttc.itat.model;
public class Role {

    private String id;
    private String name;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Role(String id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public Role() {
        super();
    }
}

测试类
@Test
    public void test02(){
        try {
            Map<String,Object> map = new HashMap<String, Object>();
            User u = new User("2","八戒","bajie");
            Role r = new Role("3","悟空");
            map.put("user",u);
            map.put("role", r);
            //以下表达式是在root中找,u是root
            System.out.println(Ognl.getValue("username",map,u));
            //#user.username是在map中找user这个键值对
            //一旦加了# 在map中找,没有加在root找
            System.out.println(Ognl.getValue("#user.username", map, u));
            //如果root为map可以直接取,不加#
            System.out.println(Ognl.getValue("user.username", map, map));
            //Ognl其实就是一个大的Context,根的key就是root,所以可以通过#root.xx取值
            System.out.println(Ognl.getValue("#root.username", map, u));
        } catch (OgnlException e) { 
            e.printStackTrace();
        }
    }

导航信息表:
   u
    --id
    --username
    --password
    --dep
       --name

   map
     --user
     --role
     只要在map中找内容必须加#

   root
     --u
(//Ognl其实就是一个大的Context,根的key就是root,所以可以通过#root.xx取值)
第四种:(把对象放入List中)沿用第二种方法
***User.java***
package org.zttc.itat.model;
public class User {

    private String id;
    private String username;
    private String nickname;
    private Department dep;

    public int sum(int a,int b){
        return a+b;
    }
    public Department getDep() {
        return dep;
    }
    public void setDep(Department dep) {
        this.dep = dep;
    }
    public User(String id, String username, String nickname) {
        super();
        this.id = id;
        this.username = username;
        this.nickname = nickname;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
    public User() {
        super();
    }

}

测试类:
@Test
    public void test04(){
        try {
            List<User> list = new ArrayList<User>();
            list.add(new User("1","ts","唐僧"));
            list.add(new User("2","bj","八戒"));
            list.add(new User("3","ss","杀神"));
            list.add(new User("4","wk","悟空"));
            //如果取List中的元素,需要通过#root[index]来完成取值
            System.out.println(Ognl.getValue("#root[1].username", list));
            System.out.println(Ognl.getValue("#root[1].sum(1,2)", list));
            System.out.println(Ognl.getValue("get(0).username", list));
            //可以获取对象的方法
            User u =new User();
            System.out.println(Ognl.getValue("sum(2,4)", u));
        } catch (OgnlException e) { 
            e.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值