`

struts2 ognl tags标签总结

 
阅读更多
以下来自尚学堂马士兵的例子:
<ol>
		<li>访问值栈中的action的普通属性: username = <s:property value="username"/> </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="@com.bjsxt.struts2.ognl.S@s()"/></li>
		<li>访问静态属性:<s:property value="@com.bjsxt.struts2.ognl.S@STR"/></li>
		<li>访问Math类的静态方法:<s:property value="@@max(2,3)" /></li>
		<hr />
		<li>访问普通类的构造方法:<s:property value="new com.bjsxt.struts2.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>----》没有意义,set是无序的
		<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 />
		<li>投影(过滤):<s:property value="users.{?#this.age==1}[0]"/></li>
		<li>投影:<s:property value="users.{^#this.age>1}.{age}"/></li>
		<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>
		
	</ol>
	
	<s:debug></s:debug>

 

<ol>
		<li>property: <s:property value="username"/> </li>
		<li>property 取值为字符串: <s:property value="'username'"/> </li>
		<li>property 设定默认值: <s:property value="admin" default="管理员"/> </li>
		<li>property 设定HTML: <s:property value="'<hr/>'" escape="false"/> </li>
		<hr />
		<li>set 设定adminName值(默认为request 和 ActionContext): <s:set var="adminName" value="username" /></li>
		
		<li>set 从request取值: <s:property value="#request.adminName" /></li>
		<li>set 从ActionContext取值: <s:property value="#adminName" /></li>
		
		<%--<li>set 设定范围: <s:set name="adminPassword" value="password" scope="page"/></li>
		<li>set 从相应范围取值: <%=pageContext.getAttribute("adminPassword") %></li>
		--%>
		<li>set 设定var,范围为ActionContext: <s:set var="adminPassword" value="password" scope="session"/></li>
		<li>set 使用#取值: <s:property value="#adminPassword"/> </li>
		<li>set 从相应范围取值: <s:property value="#session.adminPassword"/> </li>
		
		<hr />
		
		<%--<li>push:<s:set name="myDog" value="new com.bjsxt.struts2.ognl.Dog('oudy')"></s:set></li>
		<li>
		push:<s:push value="#myDog">
			<s:property value="name"/>
		</s:push>
		</li>
		<li>push: <s:property value="name"/></li>
		--%>
		
		<hr />
		<li>bean 定义bean,并使用param来设定新的属性值:
			<s:bean name="com.bjsxt.struts2.tags.Dog" >
				<s:param name="name" value="'pp'"></s:param>
				<s:property value="name"/>
				
			</s:bean>
			
			
		</li>
		
		<li>bean 查看debug情况:
			<s:bean name="com.bjsxt.struts2.tags.Dog" var="myDog">
				<s:param name="name" value="'oudy'"></s:param>
			</s:bean>
			拿出值:
			<s:property value="#myDog.name"/>
			
		</li>
		<hr />
		
		<li>include _include1.html 包含静态英文文件
		<s:include value="/_include1.html"></s:include>
		</li>
		
		<li>include _include2.html 包含静态中文文件
		<s:include value="/_include2.html"></s:include>
		</li>
		
		<li>include _include1.html 包含静态英文文件,说明%用法
		<s:set var="incPage" value="%{'/_include1.html'}" />
		<s:include value="%{#incPage}"></s:include>
		</li>
		
		
		<hr />
		
		<li>if elseif else: 
		age = <s:property value="#parameters.age[0]" /> <br />
		<s:set var="age" value="#parameters.age[0]" />
		<s:if test="#age < 0">wrong age!</s:if>
		<s:elseif test="#parameters.age[0] < 20">too young!</s:elseif>
		<s:else>yeah!</s:else><br />
		
		<s:if test="#parameters.aaa == null">null</s:if>
		</li>
		
		<hr />
		
		<li>遍历集合:<br />
		<s:iterator value="{1, 2, 3}" >
			<s:property/> |
		</s:iterator>
		</li>
		<li>自定义变量:<br />
		<s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
			<s:property value="#x.toUpperCase()"/> |
		</s:iterator>
		</li>
		<li>使用status:<br />
		<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
			<s:property/> | 
			遍历过的元素总数:<s:property value="#status.count"/> |
			遍历过的元素索引:<s:property value="#status.index"/> |
			当前是偶数?:<s:property value="#status.even"/> |
			当前是奇数?:<s:property value="#status.odd"/> |
			是第一个元素吗?:<s:property value="#status.first"/> |
			是最后一个元素吗?:<s:property value="#status.last"/>
			<br />
		</s:iterator>
		
		</li>
		
		<li>
		<s:iterator value="#{1:'a', 2:'b', 3:'c'}" >
			<s:property value="key"/> | <s:property value="value"/> <br />
		</s:iterator>
		</li>
		
		<li>
		<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
			<s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
		</s:iterator>
		</li>
		
		<li>
		
		<s:fielderror fieldName="fielderror.test" theme="simple"></s:fielderror>
		
		</li>
	</ol>

 

OGNL要结合struts2标签来使用,下面是总结:

1、“#”符号有三种用途:

  (1) 得到上下文对象

 

名称 作用 例子

parameters

包含当前HTTP请求参数的Map #parameters.id[0]作用相当于request.getParameter("id"
request 包含当前HttpServletRequest的属性(attribute)的Map #request.userName相当于request.getAttribute("userName"

session

包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute("userName"

application

包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute("userName")    
attr 用于按 request > session > application 顺序访问其属性attribute #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止。

  (2) 用于过滤和投影(projecting)集合,如: books.{?#this.price>35

  (3)构造Map,如: #{'foo1':'bar1''foo2':'bar2'

        

   #{'foo1':'bar1''foo2':'bar2'}这种方式常用在给radio或select、checkbox等标签赋值上。如果要在页面中取一个    map的值可以这样写:    

  

  <s:property value="#myMap['foo1']"/>     

  

  <s:property value="#myMap['foo1']"/>

2. “%”符号的用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。

    如:<s:set name="myMap" value="#{'key1':'value1','key2':'value2'}"/>   

             <s:url value="%{#myMap['key1']}"/>  

3、“$”有两种用途   

  

(1)、在国际化资源文件中,引用OGNL表达式。   

  

(2)、在Struts 2配置文件中,引用OGNL表达式:    

  

<action name="saveUser" class="userAction" method="save">   

  

<result type="redirect">listUser.action?msg=${msg}</result>   

  

</action>   

  

<action name="saveUser" class="userAction" method="save">       

  

<result type="redirect">listUser.action?msg=${msg}</result>   

  

</action> 

分享到:
评论

相关推荐

    struts标签库

    3.1 Struts 2 的OGNL 3.2 Struts 2 的标签库 3.2.1 数据标签 当一个请求符合要求时,Struts 2框架就会处理,最终跳转到“success.jsp”页 面并显示其内容,现在利用Struts 2的action标签,可以直接在页面发出该请求...

    Struts2 学习笔记

    01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符...Struts2总结 39

    Struts2帮助```````

    01 Struts2-Action 5 一、 Struts作用: 5 二、 搭建Struts2的运行环境: 5 三、 Namespace 6 四、 标签 6 五、 Action 6 六、 路径问题的说明 8 七、 Action的动态调用方法 8 八、 Action通配符...Struts2总结 39

    struts2入门实例1

    struts2 最新的入门实例 我自己总结的 呵呵,欢迎提出宝贵的意见 1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp--------------...

    struts2入门实例2 经典入门必备

    1.Struts2_01_login 对应登录。。 ... login_struts2.jsp---------------...14.Struts2_06tags struts标签 15.Struts2_07i18n 国际化 16.Struts2_08interceptor 拦截器 17.Struts2_09up&down 上传和下载

    struts2入门实例4 经典入门必备

    1.Struts2_01_login 对应登录。。 ... login_struts2.jsp---------------...14.Struts2_06tags struts标签 15.Struts2_07i18n 国际化 16.Struts2_08interceptor 拦截器 17.Struts2_09up&down 上传和下载

    struts2入门实例3 经典入门必备

    1.Struts2_01_login 对应登录。。 ... login_struts2.jsp---------------...14.Struts2_06tags struts标签 15.Struts2_07i18n 国际化 16.Struts2_08interceptor 拦截器 17.Struts2_09up&down 上传和下载

    Struts2 国际化字符串 拦截器

    文件的国际化字符串中使用OGNL,格式为${表达式},例如: validation.required=${getText(fileName)} is required 2. 使用java.text.MessageFormat中的字符串格式,格式为{ 参数序号(从0开始), ...struts-dojo-tags

    struts 2.3.4.1 最新英文版API

    org.apache.struts2.views.freemarker.tags org.apache.struts2.views.jsp Struts's JSP tag library. org.apache.struts2.views.jsp.iterator org.apache.struts2.views.jsp.ui org.apache.struts2.views.util ...

    java开发工具类

    ibtis2中文文档 j2eeAPI Android 中文API合集 css 3.0 fastjson 1.1.26 hibernate3.2 ...struts2-tags-API struts2中文教程 W3C School WAP技术--WML中文参考手册 XMLHTTP手册 各种帮助文档,希望对大家有用

    Structs2学习宝典.doc

    第一章 认识Web项目 第二章 Action 第三章 Result 第四章 OGNL 第五章 Struts Tags

    Java学习笔记-个人整理的

    {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{...

    dangdang和smartstruts2.rar

    表现层:jQuery+Ajax、Struts2标签+OGNL 控制层:Struts2控制器,Action组件 业务层:JavaBean组件、javamail 数据访问层:JavaBean+DAO模式,JDBC+连接池(dbcp) log4j:日志工具,用于输出日志信息.主要在业务...

    网上商城需求报告

    表现层:jQuery+Ajax、Struts2标签+OGNL 控制层:Struts2控制器,Action组件 业务层:JavaBean组件、javamail 数据访问层:JavaBean+DAO模式,JDBC+连接池(dbcp) log4j:日志工具,用于输出日志信息.主要在业务...

Global site tag (gtag.js) - Google Analytics