`

struts2中OGNL的用法

阅读更多

 

需引入标签库:<%@ 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方法……

 

 

2
3
分享到:
评论
1 楼 夏大神 2013-08-24  
  

相关推荐

    struts2 ognl用法项目

    在这个“Struts2 OGNL用法项目”中,我们将深入探讨OGNL(Object-Graph Navigation Language),它是Struts2中一个强大的表达式语言,用于在模型对象和视图之间进行数据绑定和表达式计算。 OGNL是Struts2的核心组件...

    struts2中的OGNL的源码

    其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达语言,用于在视图层与模型层之间传递数据。在深入理解OGNL的源码之前,我们首先需要了解OGNL的基本概念和用法。 OGNL是一种强大的表达式语言...

    struts2_OGNL Demo

    这个项目旨在帮助开发者理解和学习如何在Struts2中使用OGNL来操纵对象和数据。OGNL是Struts2中一个重要的组件,它允许在视图层和控制层之间传递和操作数据。 首先,我们来看`.classpath`、`.mymetadata`、`.project...

    Struts2 使用OGNL表达式

    这篇博客文章可能详细探讨了如何在Struts2中使用OGNL来传递和操作数据。 OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来访问和修改对象的属性,甚至可以处理复杂的对象结构。以下是一些关于...

    Struts2_OGNL

    OGNL(Object-Graph Navigation Language)是Struts2框架中的一个重要组件,用于在Web应用中访问和操作Java对象的属性,调用其方法,以及执行类型转换等操作。 OGNL是对象图导航语言的缩写,它是一种功能强大的...

    struts2 ognl的用法

    ### Struts2中OGNL的使用详解 #### 一、OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置一个对象图中的属性。它在Struts2框架中扮演着极其重要的角色,是Struts2实现...

    很全面的struts2_ognl总结

    在 Struts2 中,可以使用 OGNL 来访问 ValueStack 中的静态方法,例如: &lt;s:property value="@com.bjsxt.struts2.ognl.S@s()"/&gt; 这将调用 com.bjsxt.struts2.ognl.S 类的静态方法 s()。 四、访问 ValueStack 中的...

    Struts2之Ognl详解案例TextOgnl

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。这篇博客将深入探讨OGNL在Struts2中的应用,并通过案例"TextOgnl"来展示其工作原理。 一、OGNL的基本...

    struts2 标签 OGNL

    在Struts2中,OGNL被广泛用于访问Action中的属性,以及在视图层(如JSP)中绑定和操作数据。 首先,OGNL使得访问对象属性变得非常直观。它支持点符号(.)和方括号([''])两种方式来访问属性。例如,如果在Action...

    Struts2核心包ognl-2的源代码

    5. **安全特性**:在Struts2中,OGNL的不当使用可能导致安全漏洞,如著名的Struts2 OGNL注入攻击。源代码中包含了对这种风险的防护措施,如输入过滤和安全配置选项。 深入学习这些源代码,开发者不仅可以了解OGNL的...

    struts2对Ognl的封装--PropertyAccessor

    在压缩包文件`struts-ognl.asta`中,可能包含了一些示例或测试用例,用于演示Struts2中PropertyAccessor的使用和功能。你可以通过分析这些文件来更深入地理解PropertyAccessor的工作原理。 总结起来,"struts2对...

    struts2中ognl表达式的理解和用法

    在Struts2中,OGNL被广泛用于视图层和控制器层之间的数据传递,以及动态方法调用。 一、OGNL基本语法 1. 访问对象属性:`对象名.属性名`。例如,`person.name` 将访问person对象的name属性。 2. 数组和集合访问:...

    OGNL学习笔记,包含struts2中ognl的各种用法

    本篇笔记主要介绍了在Struts2中使用OGNL的一些基本用法。 首先,OGNL可以用来获取不同范围内的属性值。在Java Web开发中,有四种常见的作用域:Request、Session、Application和Page。在示例代码中,`&lt;s:property&gt;`...

    struts2_ognl基本用法.doc

    在Struts2中,OGNL主要用于访问值栈中的数据,包括Action实例以及它所包含的对象属性。 **1. 访问Action的普通属性** ```html ``` 上述代码展示了如何通过`&lt;s:property&gt;`标签访问值栈中Action实例的一个属性...

    struts2中OGNL的一些概念及原理说明

    ### Struts2中OGNL的概念及原理说明 #### 一、OGNL表达式的基本用法与特点 **OGNL**,即**Object Graphic Navigation Language**(对象图导航语言),是Struts2框架中用于处理对象及其属性的强大工具之一。通过...

    struts2中ognl的使用

    这篇文档将深入探讨OGNL在Struts2中的使用,以及它如何增强框架的功能。 ### OGNL简介 OGNL是一种轻量级的、灵活的表达式语言,主要用于Java对象的导航和操作。在Struts2中,OGNL用于视图层和控制层之间的数据绑定...

    struts2-OGNL表达式测试

    在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于访问和操作对象图。这个“struts2-OGNL表达式测试”可能是一个测试项目或代码示例,旨在演示如何在Struts2应用中使用OGNL表达式...

    Struts2 的OGNL使用简介

    本篇文章将详细介绍Struts2中OGNL的使用,包括基本语法、表达式操作以及在实际开发中的应用。 ### OGNL简介 OGNL是一种强大的表达式语言,允许动态地访问和修改对象图。在Struts2中,OGNL负责视图层和模型层之间的...

Global site tag (gtag.js) - Google Analytics