struts2中OGNL的用法_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > struts2中OGNL的用法

struts2中OGNL的用法

 2013/8/18 21:28:46  夏大神  程序员俱乐部  我要评论(0)
  • 摘要:需引入标签库:<%@tagliburi="/struts-tags"prefix="s"%><body><!--测试下面方法,可在浏览器地址栏输入:http://localhost:8088/strutsOGNL/ognl?username=u&password=1&user.age=10&cat.miaomiao-->OGNL简单总结=>例
  • 标签:用法 struts

?

class="jsp页面">需引入标签库:<%@ taglib uri="/struts-tags" prefix="s" %>
<body>
<!-- 测试下面方法,可在浏览器地址栏输入:http://localhost:8088/strutsOGNL/ognl?username=u&password=1&user.age=10&cat.miaomiao -->
	OGNL简单总结=>例:在地址栏输入参数username=u会调用Action属性里面的setUsername方法,把u赋值给usernme属性,然后在ValueStack中会调用getUsername方法取得usernme的属性放入Property Value中,通过OGNL表达式就可以获取出值。
如果usernme属性没有Set方法,在Property Value中获取该属性时显示:There is no read method for username
	<ol>
		<li>访问值栈中的action的普通属性: username = <s:property value="username"/> password = <s:property value="password"/></li>
		<li>访问值栈中对象的普通属性(get set方法):<s:property value="user.age"/> | <s:property value="user['age']"/> | <s:property value="user[\"age\"]"/> | wrong: <%--<s:property value="user[age]"/>--%></li>
		<li>访问值栈中对象的普通属性(get set方法): <s:property value="cat.friend.name"/></li>
		<li>访问值栈中对象的普通方法:<s:property value="password.length()"/></li>
		<li>访问值栈中对象的普通方法:<s:property value="cat.miaomiao()" /></li>
		<li>访问值栈中action的普通方法:<s:property value="m()" /></li>
		<hr />
		<li>访问静态方法:<s:property value="@ognl.S@s()"/></li>
		<li>访问静态属性:<s:property value="@ognl.S@STR"/></li>
		<li>访问Math类的静态方法:<s:property value="@@max(2,3)" /></li>
		<hr />
		<li>访问普通类的构造方法:<s:property value="new ognl.User(8)"/></li>
		<hr />
		<li>访问List:<s:property value="users"/></li>
		<li>访问List中某个元素:<s:property value="users[1]"/></li>
		<li>访问List中元素某个属性的集合:<s:property value="users.{age}"/></li>
		<li>访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/></li>
		<li>访问Set:<s:property value="dogs"/></li>
		<li>访问Set中某个元素:<s:property value="dogs[1]"/></li>
		<li>访问Map:<s:property value="dogMap"/></li>
		<li>访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap[\"dog101\"]"/></li>
		<li>访问Map中所有的key:<s:property value="dogMap.keys"/></li>
		<li>访问Map中所有的value:<s:property value="dogMap.values"/></li>
		<li>访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/> </li>
		<hr />
		从集合中取出age=1的第一个元素 
		<li>投影(过滤):<s:property value="users.{?#this.age==1}[0]"/></li>
		从集合中取出age>1的开始那个元素 
		<li>投影:<s:property value="users.{^#this.age>1}.{age}"/></li>
		从集合中取出age>1的最后那个元素 
		<li>投影:<s:property value="users.{$#this.age>1}.{age}"/></li>
		判断集合是否为空
		<li>投影:<s:property value="users.{$#this.age>1}.{age} == null"/></li>
		<hr />
		<li>[]:<s:property value="[0].username"/></li>
		<li>bean 查看debug情况:
			<s:bean name="ognl.Dog" var="myDog">
				<s:param name="name" value="'oudy'"></s:param>
			</s:bean>
			拿出值:
			<s:property value="#myDog.name"/>
			
		</li>
	</ol>
</body>

?

private Cat cat;
	private Map<String, Dog> dogMap = new HashMap<String, Dog>();
	private Set<Dog> dogs = new HashSet<Dog>();
	private String password;
	private User user;
	private String username;
	private List<User> users = new ArrayList<User>();
	public OgnlAction() {
		users.add(new User(1));
		users.add(new User(2));
		users.add(new User(3));
		dogs.add(new Dog("dog1"));
		dogs.add(new Dog("dog2"));
		dogs.add(new Dog("dog3"));
		
		dogMap.put("dog100", new Dog("dog100"));
		dogMap.put("dog101", new Dog("dog101"));
		dogMap.put("dog102", new Dog("dog102"));	
	}
//省略get和set方法……

?

?

发表评论
用户名: 匿名