Struts2 - OGNL表达式和Struts2标签库

本文深入介绍了Struts2标签库中的OGNL表达式及其应用,包括访问Action属性、方法、静态类、Math类方法、容器操作、请求参数等,并详细解释了<s:property>标签的用法、条件判断、迭代等功能,以及如何配置访问静态类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、OGNL表达式

    访问Action的普通属性:

<s:property value="msg"/>
    访问Action中对象的普通属性:
<s:property value="user.name"/>
    访问Action中对象的普通方法:
<s:property value="user.info()"/>
    访问Action中普通方法:
<s:property value="actionMethod()"/>

    访问静态方法:

<s:property value="@com.xilen.action.StaticCls@stcSay()"/>
    访问静态属性:
<s:property value="@com.xilen.action.StaticCls@stcMsg"/>
    访问Math类的静态方法:
<s:property value="@@max(2,3)"/>

    访问Action中List|Set|Map:

<s:property value="userList"/>

    访问容器的大小:

<s:property value="map.size()"/>
    访问List中元素的某个属性的集合(如所有user的name):
 <s:property value="userList.{name}"/>
    访问List中的元素(对象)的某个属性的集合中的特定值:
<s:property value="userList.{name}[1]"/>

    访问List中的某个元素:

 <s:property value="userList[0]"/>
    访问Map中所有的key:
<s:property value="map.keys"/>
    访问Map中所有的value:
<s:property value="map.values"/>

    访问指定的请求参数(注意:每一个请求参数都是一个数组):

<s:property value="#parameters.parm"/>  
二、Struts2标签库

    1、<s:property/>

        一般格式:

            <s:property value="" default="" escape=""/>

        属性说明:

            value:默认当OGNL表达式处理,如果只要其当作字符串需加单引号

            defaulut:默认值,值当作字符串

            escape:表示对于得到的的字符串是否解析为HTML,默认为true(不解析)

        使用示例:

	<!--获取ValueStack中的对象-->
	<s:property value="user.name"/>
	
	<!--获取StackContext中的对象-->
	<s:property value="#request.id"/>
    2、<s:if test=""/>、<s:elseif test=""/>和<s:else/>

	<!-- 数值比较 -->
	<s:if test="1<2"></s:if>
	
	<!-- 字符串比较 -->
	<s:if test="'abc'=='abc'"></s:if>
	
	<!-- 获取parameters中的值做比较(注: #parameters.parm=='parm'不能实现比较) -->
	<s:if test="#parameters.parm[0]=='parm'"></s:if>
	
	<!-- 获取Action中的属性做比较  -->
	<s:if test="user.name=='admin'"></s:if>
    3、<s:iterator/>

        一般格式:

            <s:iterator value="userList" var="u" status="stat" >

        属性说明:

            value:OGNL表达式

            var:将遍历的当前对象别名后放至StackContext中

            status:当前遍历的信息,通过其可取得当前遍历的count(统计,始于1)、index(索引,始于0)、

                    even(是否偶数),odd(是否奇数)等

            补:另有begin(开始)、end(结束)、step(步长)等

        使用示例

	<!-- 遍历普通List -->
 	<s:iterator value="list" status="stat" >
 		<s:property value="#stat.index"/> <!-- 当前索引 -->
 		<s:property value="#stat.odd"/> <!-- 是否为奇数次遍历  -->
		<s:property /> <!-- 获取当前对象 -->
	</s:iterator>
	
	<!-- 遍历对象List -->
	<s:iterator value="userList" var="user" status="stat" >	
		<s:property value="#user.name" /> <!-- 获取属性 -->
		<s:property value="#user.name.toUpperCase()" /> <!-- 对属性添加处理 -->
	</s:iterator>
	
	<!-- 遍历Map -->
	<s:iterator value="map" status="stat" >
		<s:property /> <!-- 获取当前key=value -->
		<s:property value="key" /> <!-- 获取当前key -->
		<s:property value="value" /> <!-- 获取当前value -->
	</s:iterator>
三、补充

    1、使用标签库,jsp需添加:

<%@ taglib prefix="s" uri="/struts-tags" %>

    2、要访问静态类,struts需配置:

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值