package com.wen.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; import ognl.Ognl; import ognl.OgnlException; import com.wen.model.Department; import com.wen.model.Role; import com.wen.model.User; /** * 测试Ognl的四种方式的使用 * * @author John_wen * @since 2015-1-9 */ public class TestOgnl { /** * 第一种使用方式;这种是简单使用;Ognl.getValue();第二个参数是根,这样直接可以去根的属性 * * @throws OgnlException */ @Test public void Test01() throws OgnlException { User user = new User(); user.setUserName("hello"); user.setNickName("你好"); // 先不设置部门 System.out.println(Ognl.getValue("userName", user)); Department dept = new Department(); dept.setDeptName("人事部"); user.setDept(dept); // 设置部门 System.out.println(Ognl.getValue("dept.deptName", user)); } /** * 第二种使用方式;需求去Map中的值; * * @throws OgnlException */ @Test public void Test02() throws OgnlException { Map<String, Object> ctx = new HashMap<String, Object>(); User user = new User(); user.setUserName("hello"); user.setNickName("你好"); Department dept = new Department(); dept.setDeptName("开发部"); Role role = new Role(); role.setName("超级管理员"); ctx.put("u", user); ctx.put("r", role); // 输出用户名--这种情况和test01类似;根依然是user; // System.out.println(Ognl.getValue("userName", ctx,user)); // 输出用户名:--在map中找 System.out.println(Ognl.getValue("#u.userName", ctx, user)); System.out.println(Ognl.getValue("#r.name", ctx, user)); // root相当于根 System.out.println(Ognl.getValue("#root.userName", ctx, user)); } /** * 第三种方式;如果根是list;怎么访问; * * @throws OgnlException */ @Test public void Test03() throws OgnlException { List<User> users = new ArrayList<User>(); User u1 = new User(); u1.setUserName("hello"); u1.setNickName("你好"); User u2 = new User(); u2.setUserName("world"); u2.setNickName("世界"); users.add(u1); users.add(u2); // 根是users // 总结:如果是list为根,取值则为#root[index].xxx方式 System.out.println(Ognl.getValue("#root[0].userName", users)); } /** * 取对象中的方法 * * @throws OgnlException */ @Test public void Test04() throws OgnlException { List<User> users = new ArrayList<User>(); User u1 = new User(); u1.setUserName("hello"); u1.setNickName("你好"); User u2 = new User(); u2.setUserName("world"); u2.setNickName("世界"); users.add(u1); users.add(u2); // 根是users // 总结:get();其实是ArrayList中的方法,得到index对应的对象 System.out.println(Ognl.getValue("get(1).userName", users)); } }