4、Ognl实验

  1 package test;
  2 
  3 import java.util.ArrayList;
  4 import java.util.HashMap;
  5 
  6 import org.junit.Test;
  7 
  8 import ognl.Ognl;
  9 import ognl.OgnlException;
 10 import tcx.model.Department;
 11 import tcx.model.Role;
 12 import tcx.model.User;
 13 
 14 public class testOgnl {
 15 
 16     @Test
 17     public void test() {
 18         try {
 19             User u = new User("1", "naruto", "鸣人");
 20             Department dep = new Department("火之国");
 21             u.setDep(dep);
 22             User u2 = new User("2", "sasuke", "佐助", dep);
 23             User u3 = new User("3", "Itachi", "鼬", dep);
 24 
 25             System.out.println(Ognl.getValue("id", u));
 26             System.out.println(Ognl.getValue("username", u));
 27             System.out.println(Ognl.getValue("nickname", u));
 28             System.out.println(Ognl.getValue("dep.name", u));
 29             System.out.println(">>>>>>------------------------------>>>>>>>>>");
 30 
 31             ArrayList<User> users = new ArrayList<>();
 32             users.add(u);
 33             users.add(u2);
 34             users.add(u3);
 35             for (User k : users) {
 36                 System.out.println(k.getId());
 37                 System.out.println(k.getUsername());
 38                 System.out.println(k.getNickname());
 39                 System.out.println(k.getDep().getName());
 40                 System.out.println("------------------------------>>>>>>>>>");
 41             }
 42         } catch (OgnlException e) {
 43             e.printStackTrace();
 44         }
 45     }
 46 
 47     @Test
 48     public void test1() {
 49         try {
 50             User u = new User("1", "naruto", "鸣人");
 51             Department dep = new Department("火之国");
 52             u.setDep(dep);
 53             User u2 = new User("2", "sasuke", "佐助", dep);
 54             User u3 = new User("3", "Itachi", "鼬", dep);
 55             Role role = new Role("1", "wukong", "孙悟空");
 56             HashMap<String, Object> context = new HashMap<String, Object>();
 57             context.put("u", u);
 58             context.put("u2", u2);
 59             context.put("u3", u3);
 60             context.put("role", role);
 61             // 以下表达式是在root中找,u是root。
 62             System.out.println(Ognl.getValue("id", context, u));
 63             System.out.println(Ognl.getValue("username", context, u));
 64             System.out.println(Ognl.getValue("nickname", context, u));
 65             System.out.println(Ognl.getValue("dep.name", context, u));
 66             // 以下表达式是在context这个map中查找,和root无关,root是u。
 67             System.out.println(Ognl.getValue("#role.username", context, u));
 68             // root为context不加#可以取到值。
 69             System.out.println(Ognl.getValue("role.username", context, context));
 70             // Ognl是一个大的Context,根的key是root,所以可以通过#root.xx取值
 71             System.out.println(Ognl.getValue("#root.username", context, role));
 72 
 73         } catch (Exception e) {
 74             e.printStackTrace();
 75         }
 76     }
 77 
 78     @Test
 79     public void test2() {
 80         try {
 81             User u = new User("1", "naruto", "鸣人");
 82             Department dep = new Department("火之国");
 83             u.setDep(dep);
 84             User u2 = new User("2", "sasuke", "佐助", dep);
 85             User u3 = new User("3", "Itachi", "鼬", dep);
 86             ArrayList<User> users = new ArrayList<>();
 87 
 88             users.add(u);
 89             users.add(u2);
 90             users.add(u3);
 91             // 取list中的元素,通过#root[index].xx。
 92             System.out.println(Ognl.getValue("#root[0].id", users));
 93             System.out.println(Ognl.getValue("#root[0].username", users));
 94             System.out.println(Ognl.getValue("#root[0].dep.name", users));
 95             System.out.println(Ognl.getValue("#root[1].id", users));
 96             System.out.println(Ognl.getValue("#root[1].username", users));
 97             System.out.println(Ognl.getValue("#root[1].dep.name", users));
 98             System.out.println(Ognl.getValue("#root[2].id", users));
 99             System.out.println(Ognl.getValue("#root[2].username", users));
100             System.out.println(Ognl.getValue("#root[2].dep.name", users));
101 
102         } catch (Exception e) {
103             e.printStackTrace();
104         }
105     }
106 
107     @Test
108     public void test3() {
109         try {
110             User u = new User("1", "naruto", "鸣人");
111             Department dep = new Department("火之国");
112             u.setDep(dep);
113             User u2 = new User("2", "sasuke", "佐助", dep);
114             User u3 = new User("3", "Itachi", "鼬", dep);
115             ArrayList<User> users = new ArrayList<>();
116 
117             users.add(u);
118             users.add(u2);
119             users.add(u3);
120             // ognl完成方法的调用。
121             System.out.println(Ognl.getValue("#root[0].sum(1,100)", users));
122             System.out.println(Ognl.getValue("#root[1].hello(123)", users));
123             System.out.println(Ognl.getValue("hello('困')", u));
124             // 可以通过调用list中的get()方法获取某个下标的对象,然后完成导航。
125             System.out.println(Ognl.getValue("get(0).username", users));
126         } catch (OgnlException e) {
127             e.printStackTrace();
128         }
129     }
130 
131 }

用到的类User,Role,Department

 1 package tcx.model;
 2 
 3 public class User {
 4     private String id;
 5     private String username;
 6     private String nickname;
 7     private Department dep;
 8     public String getId() {
 9         return id;
10     }
11     public void setId(String id) {
12         this.id = id;
13     }
14     public String getUsername() {
15         return username;
16     }
17     public void setUsername(String username) {
18         this.username = username;
19     }
20     public String getNickname() {
21         return nickname;
22     }
23     public void setNickname(String nickname) {
24         this.nickname = nickname;
25     }
26     public Department getDep() {
27         return dep;
28     }
29     public void setDep(Department dep) {
30         this.dep = dep;
31     }
32     public User(String id, String username, String nickname) {
33         super();
34         this.id = id;
35         this.username = username;
36         this.nickname = nickname;
37     }
38     
39     public User(String id, String username, String nickname, Department dep) {
40         super();
41         this.id = id;
42         this.username = username;
43         this.nickname = nickname;
44         this.dep = dep;
45     }
46     @Override
47     public String toString() {
48         return "User [id=" + id + ", username=" + username + ", nickname=" + nickname + "]";
49     }
50     public int sum(int a,int b) {
51         return a+b;
52     }
53     public String hello(String h) {
54         return h+"中国dota乙烷";
55     }
56     
57 }
 1 package tcx.model;
 2 
 3 public class Department {
 4     private String name;
 5 
 6     public String getName() {
 7         return name;
 8     }
 9 
10     public void setName(String name) {
11         this.name = name;
12     }
13 
14     public Department(String name) {
15         super();
16         this.name = name;
17     }
18     
19     
20 }
 1 package tcx.model;
 2 
 3 public class Role {
 4     private String id;
 5     private String username;
 6     private String nickname;
 7 
 8     public String getId() {
 9         return id;
10     }
11 
12     public void setId(String id) {
13         this.id = id;
14     }
15 
16     public String getUsername() {
17         return username;
18     }
19 
20     public void setUsername(String username) {
21         this.username = username;
22     }
23 
24     public String getNickname() {
25         return nickname;
26     }
27 
28     public void setNickname(String nickname) {
29         this.nickname = nickname;
30     }
31 
32     public Role(String id, String username, String nickname) {
33         super();
34         this.id = id;
35         this.username = username;
36         this.nickname = nickname;
37     }
38     
39 }

 从根下取值不需要加#号

从context下取值需要加#号

根的结构

u

--id

--username

--nickname

--dep

  --name

context结构

context

--u

--u1

--u2

--u3

posted @ 2015-11-22 04:49  Akke  阅读(224)  评论(0编辑  收藏  举报