OGNL--object Graphoc Naviguage 对象图导航语言 --是一个功能强大的表达式语言
OGNL 表达式是框架的特点之一
Struts2 中的OGNL:最大的附加忒特性就是支持值栈,在OGNL上下文中只能有一个根对象,Struts2 的值栈允许存在许多虚拟根对象;
注:OGNL 上下文可以包含一个或多个JavaBean 对象,在这些对象中是一个特殊的,这个对象就是上下文的跟root 对象;
访问根对象的属性不需要任何的标记,其他对象都需要使用一个井号(#) 来访问;
值栈通过一个接口进行定义:com.opensympony.xwork2.util.ValueStack
对应的实现类是:com.opensymphony.xwork2.util.OgnlValueStack
值栈是上下文中根的对象,因此可以直接的进行访问;
项目:演示了如何使用OGNL 表达式来访问OGNL 上下文和值栈,同时演示了如何使用OGNL 表达式进行结合操作
投影:OGNL 提供了一个简单的方式在一个集合中对每一个元素调用相同的方法,或者抽取相同的属性,并将
结果保存为一个新的集合。称之为投影;
例:假设employess 是一个包含了employee对象的列表,下列表达式:
#employees.{name} 返回所有雇员名字的列表;
在投影期间使用#this 变量来引用迭代的当前元素:Objects.{#this.iinstanceof String?#this.toString()}
上述表达式将对象中的元素作为字符串值产生一个新的元素列表;
选择:
OGNL 提供了一个 简单的方式来使用表达式从集合中选择某些元素,并将结果保存到新的集合中;
例:
假设employees是一个包含了employee对象的列表:
#employees.{?@this.salary>3000} 返回雇员薪水大于3000 的所有员工的列表
如果要得到元素列表中的第一个元素可以使用索引:
@employees.{^#this.salary>3000}[0]
表达式的三个字符的用法:
?--------选取匹配选择逻辑的所有元素
^--------选取匹配逻辑的第一个元素
$--------选取匹配逻辑的最后一个元素
bean 标签的使用:
bean 标签用于实例化一个JavaBean 对象(符合规范),bean标签的标签体可以包含多个param标签,用于设置
Bean的属性;
<s:bean name="com.svse.entity.User" var="user">
<s:param name="" value/>
</s:bean>
iterator标签的使用:
属性用法:
var :可以通过该属性的值引用集合中的元素
status:同过该实例可以获得迭代过程的一些状态信息
IteratorStatus 实例包含了以下几个方法:
int getCount();返回当前迭代过元素的总和;
int getIndex(); 返回当前迭代元素的索引。
boolean isEven(); 判断当前迭代元素是否为偶数
boolean isOdd(); 判断当前迭代元素是否为奇数
boolean isFirst()/isLast(); 判断当前迭代的元素是否为最后一个元素
案例:
<s:bean name="org.apache.struts2.example.IteratorExample" var="it">
<s:param name="day" value="foo"/>
<s:param name="day" value="bar"/>
</s:bean>
<p/>
<table border cellspacing="0" cellpadding="1">
<tr>
<th>Days of the week</th>
</tr>
<s:iterator value="#it.days" status="rowstatus">
<tr>
<s:if test="#rowstatus.odd==true">
<td style="background:grey"><s:property/></td>
</s:if>
<s:else>
<td><s:property/></td>
</s:else>
</tr>
</s:iterator>
</table>
分享到:
相关推荐
OGNL(Object-Graph Navigation Language)是一...以上是关于OGNL和Struts2标签的详细知识点,这些知识点是构建和维护基于Struts2框架的Web应用所必需的。掌握这些知识对于提升Java Web开发的效率和质量具有重要意义。
2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路)]@[方法名 | 值名],例如: @java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME; 3、支持赋值操作和表达式串联,...
除了OGNL,Struts2还提供了一个丰富的标签库,包括UI标签和非UI标签。UI标签主要用于创建HTML表单,非UI标签则提供控制逻辑,如条件语句。UI标签通常有通用属性,比如`label`用于设置控件的名称,`labelposition`...
在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。
### Struts2中OGNL的使用详解 #### 一、OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式...通过本文对OGNL在Struts2中的应用场景和使用技巧的介绍,希望能帮助开发者更好地利用这一强大工具。
在“使用OGNL和Struts2标签展示页面(一)”的资料中,可能包含了如何利用OGNL标签展示用户信息、处理表单数据和文件上传等实际应用场景。学习这些示例有助于理解OGNL在实际项目中的应用。 **8. 总结** OGNL标签...
在Struts2中,OGNL表达式通常与Struts标签结合使用,如`s:property`标签,用于显示对象的属性值。例如,`<s:property value="name"/>`将显示栈顶对象的"name"属性值。栈顶对象是指在ValueStack(值栈)中位于最顶层...
Struts2 OGNL(Object-Graph ...通过理解并熟练运用OGNL表达式和相关标签,开发者可以更高效地构建Struts2应用程序,实现数据的灵活绑定和交互。同时,了解其潜在的安全风险并采取相应措施是保障应用程序安全的关键。
以下是关于OGNL和Struts2标签的详细解释: 1. **OGNL的基本概念**:OGNL是一种强大的表达式语言,允许开发者通过简洁的语法来访问和操作对象的属性。它可以执行方法调用、访问静态方法和常量、进行赋值和表达式串联...
在掌握Struts2和OGNL的基础上,开发者可以进一步学习Struts2的其他组件和特性,如标签库、异常处理、国际化支持、拦截器机制、输入校验、文件上传和下载等,这些都是构建复杂Web应用不可或缺的组件和功能。
Struts2 OGNL---标签详解析 都有实例 适合初学者
在Struts2中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置对象的属性。这篇博客将深入探讨OGNL在Struts2中的应用,并通过案例"TextOgnl"来展示其工作原理。 一、OGNL的基本...
Struts2是一个流行的Java web开发框架,其核心特性之一就是使用OGNL(Object-Graph Navigation Language)作为表达式语言,并提供了丰富的标签库来简化视图层的开发。本篇文章将详细探讨Struts2中的OGNL表达式语言...
- **OGNL表达式**:在Struts2标签中广泛使用,可以用来访问Action的属性,如`s:property value="%{user.name}"`。 - **标签组合使用**:通过组合多个标签,可以实现复杂的业务逻辑和界面渲染。 6. **最佳实践** ...
Struts2标签库是专为Struts2框架设计的一组JSP标签,旨在简化视图层的开发,提高代码的可读性和维护性。这些标签分为UI标签和非UI标签,分别用于生成HTML元素和处理数据访问及逻辑控制。通过使用标签库,开发者可以...
总的来说,Struts2中的Map遍历是通过OGNL和Struts2标签库实现的,这使得在视图层处理和展示Map数据变得简单而灵活。开发者可以根据需求构建各种复杂逻辑,高效地管理Web应用中的数据。了解并熟练掌握这一功能,对于...
这个项目旨在帮助开发者理解和学习如何在Struts2中使用OGNL来操纵对象和数据。OGNL是Struts2中一个重要的组件,它允许在视图层和控制层之间传递和操作数据。 首先,我们来看`.classpath`、`.mymetadata`、`.project...
参考文档是开发者理解和使用Struts2标签的关键资源,它详细阐述了每个标签的功能、属性、用法及示例,有助于快速学习和掌握Struts2的视图层开发。 通过深入学习和实践Struts2的标签API,开发者可以有效地提升Web...
`struts2-tags-API`就是这样一个资源,它包含了Struts2标签API的详细文档,帮助开发者理解和使用这些标签。 一、Struts2标签概述 Struts2标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列预定义的标签,...
- **资费列表分页显示**:引入分页功能,结合OGNL和Struts2标签库实现动态分页。 6. **OGNL技术** - OGNL是Object-Graph Navigation Language的缩写,是Struts2中的默认表达式语言,用于对象属性的访问和操作,如...