`
1140566087
  • 浏览: 547846 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18078
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:309558
Group-logo
J2ME 基础学习课程集
浏览量:18008
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17196
社区版块
存档分类
最新评论

OGNL 和Struts2 标签

阅读更多
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>				
				
			
			
			
			
			
			
			
			
							
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics