Struts2 Ognl简单测试

package test;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import model.Role;
import model.User;
import model.info;
import ognl.Ognl;
import ognl.OgnlException;

import org.junit.Test;

public class ognltest {

	public void test() {
		//单一实体类
		info in=new info("介绍", 5);
		User user=new User(1,"周五","Sunday",in);
		try {
			//第二个参数是root
			System.out.println(Ognl.getValue("username",user));
			System.out.println(Ognl.getValue("infor.memo",user));
		} catch (OgnlException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * getValue有三种参数,第一个是字符名若是root里的直接寻找,否则前面加#,可以直接#root取得字符
	 * 第二个是非root对象,寻找此空间的字符需加#号键,可以省略
	 * 第三个是root对象
	 */
	public void test0(){
		//Map集合多个实体类
		Map<String,Object> multi=new HashMap<String,Object>();
		info in=new info("备注", 6);
		User user=new User(2,"周六","Monday",in);		
		Role role=new Role(110,"警察");
		multi.put("u", user);
		multi.put("r", role);
		
		try {
			//此表达式在root下找,user是root
			System.out.println(Ognl.getValue("username",user));
			//在Map中需要加#号寻找,否则找寻user.u.infor.memo
			System.out.println(Ognl.getValue("#u.infor.memo",multi,user));
			//直接用root寻找
			System.out.println(Ognl.getValue("#root.username",multi,user));
		} catch (OgnlException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 取得list中元素,使用#root[index].xx取值
	 * 可以调用元素方法,#root[index].method(),根元素可以省略#root
	 */
	@Test
	public void test2(){
		List<Role> roles=new ArrayList<Role>();
		roles.add(new Role(1,"你"));
		roles.add(new Role(2,"我"));
		roles.add(new Role(1,"他"));
		try {
			System.out.println(Ognl.getValue("#root[1].name",roles));
			System.out.println(Ognl.getValue("#root[1].testmethod(110,1)",roles));
			//调用list中size()方法
			System.out.println(Ognl.getValue("size()",roles));
			System.out.println(Ognl.getValue("testmethod(110,1)",new Role(1,"你")));
		} catch (OgnlException e) {
			e.printStackTrace();
		}
	}

}


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值