b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

ognl表达式#号_ognl表达式和el表达式_ognl表达式

电脑杂谈  发布时间:2017-02-12 00:03:46  来源:网络整理

ValueStack是Struts2数据传输背后的机制,其基础是OGNL。想了解ValueStack的工作机制,必须先理解OGNL。

1、简介

OGNL(Object Graphic Navigation Language),对象图导航语言。下面解释何为对象图导航:

对象图导航,即以任意一个对象为根,可以访问这个对象关联的其他对象。如下面三个类:以一个User对象为根,可以导航到Group对象,进而导航到Organization对象。导航的目的,是为了获取、设置某个对象的值或调用某个对象的方法!

① 通过Java代码从User对象导航到Organization的orgId属性:

String orgId = user.getGroup().getOrg().getOrgId();

② 通过OGNL进行导航:String orgId = (String)Ognl.getValue(group.org.orgId,user);

Ognl.getValue方法的第一个参数就是一条OGNL表达式,第二个参数是指定在表达式中需要用到的root对象。

也许通过这个例子,你会觉得OGNL显得更复杂点,但OGNL的目的并不在于此。OGNL表达式的真正目的,是为了在那些不能写JA代码的地方、或者不方便写Java代码的地方执行JA代码。如在Struts2工程中,可以在strtus.xml和JSP页面使用OGNL表达式,同Action交换数据,所以,非常有必要理解OGNL的基本机制。

2、OGNL入门

下面以代码说明了OGNL表达式的用法,下面的代码完全可以在Java工程中模拟,只需导入ognl.jar和javassist.jar即可。ognl表达式这两个包可以在Struts2的lib库中找到。

① Ognl.getValue(String expression, Object root)

public class OGNLDemo1 {
	@Test
	public void testOGNL1() throws Exception{
		User user = new User();
		user.setUsername("张三");

		String value= (String) Ognl.getValue("username", user);
		System.out.println(value);
	}

	@Test
	public void testOGNL2() throws Exception{
		User user = new User();
		Group g = new Group();
		Organization o = new Organization();
		o.setOrgId("Y11");
		g.setOrg(o);
		user.setGroup(g);

		//java代码导航
		System.out.println(user.getGroup().getOrg().getOrgId());

		//OGNL代码导航
		String value= (String) Ognl.getValue("group.org.orgId", user);

		System.out.println(value);
	}

	@Test
	public void testOGNL3() throws Exception{
		User user = new User();
		Group g = new Group();
		Organization o = new Organization();
		o.setOrgId("Y11");
		g.setOrg(o);
		user.setGroup(g);

		//java代码导航
		System.out.println(user.getGroup().getOrg().getOrgId());

		//OGNL代码导航(使用#root代表root对象)
		String value= (String) Ognl.getValue("#root.group.org.orgId", user);

		System.out.println(value);
	}
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31887-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...