package org.com.test.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.com.test.model.Department;
import org.com.test.model.Role;
import org.com.test.model.User;
import org.junit.Test;
import ognl.Ognl;
import ognl.OgnlException;
public class TestOgnl {
@Test
public void ognl01(){
try {
User u = new User(1, "libai", "李白");
u.setDep(new Department("研发部"));
/**
* 根目录(u)下找username
*/
System.out.println(Ognl.getValue("username", u));
/**
* 根目录(u)下找dep.name
*/
System.out.println(Ognl.getValue("dep.name", u));
} catch (OgnlException e) {
e.printStackTrace();
}
}
@Test
public void ognl02(){
try {
Map<String, Object> ctx = new HashMap<String,Object>();
User u = new User(1, "libai", "李白");
u.setDep(new Department("研发部"));
Role r = new Role(2, "管理员");
ctx.put("user", u);ctx.put("role", r);
/**
* 根目录下(u)找username
*/
System.out.println(Ognl.getValue("username", ctx, u));
/**
* 没有#号报错:org.com.test.model.User.role (根目录下找role.name)
*/
//System.out.println(Ognl.getValue("role.name", ctx, u));
/**
* 加#号;Map context 中找role.name
*/
System.out.println(Ognl.getValue("#role.name", ctx,u));
/**
* 目前root(根目录是ctx),所以可以取得到
*/
System.out.println(Ognl.getValue("role.name", ctx, ctx));
/**
* Ognl其实就是一个大的Context,根的key就是root,所以可以根据#root.xx来取值
* 这里可以理解为u就是root;
*/
System.out.println(Ognl.getValue("#root.nickname", ctx, u));
System.out.println(Ognl.getValue("#root.user.dep.name", ctx, ctx));
} catch (OgnlException e) {
e.printStackTrace();
}
}
@Test
public void ognl03(){
try {
List<User> users = new ArrayList<User>();
users.add(new User(1, "zs", "张三"));
users.add(new User(2, "ls", "李四"));
users.add(new User(3, "ww", "王五"));
users.add(new User(4, "zl", "周六"));
/**
* 如果是List中的元素,需要用root[index]来取值
*/
System.out.println(Ognl.getValue("#root[1].nickname", users));
} catch (OgnlException e) {
e.printStackTrace();
}
}
@Test
public void ognl04(){
try {
List<User> users = new ArrayList<User>();
users.add(new User(1, "zs", "张三"));
users.add(new User(2, "ls", "李四"));
users.add(new User(3, "ww", "王五"));
users.add(new User(4, "zl", "周六"));
/**
* 访问User中的方法。
*/
System.out.println(Ognl.getValue("#root[0].sum(1,2)", users));
System.out.println(Ognl.getValue("#root[1].hello('+world')", users));
/**
* 访问List的方法。
*/
System.out.println(Ognl.getValue("get(0).nickname", users));
/**
* 一个空的User也是可以使用方法的
*/
User u = new User();
System.out.println(Ognl.getValue("hello('+world')", u));
} catch (OgnlException e) {
e.printStackTrace();
}
}
}
Struts2_Object-Graph Navigation Language(OGNL)
最新推荐文章于 2023-07-13 14:00:28 发布