通过ognl调用方法与属性

这篇博客详细介绍了如何在Struts2中使用OGNL(Object-Graph Navigation Language)来调用对象的方法和属性。内容包括s标签的引用及在视图层应用OGNL表达式的实例。

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

s标签的引用
<%@ taglib uri="/struts-tags" prefix=“s”%>

<!-- struts的调试标签 所展示的是值栈信息 ognl表达式的作用 获取值栈的数据 -->
通过ognl获取action中的普通属性:<s:property value="uname"/><br/>
通过ognl获取action中的对象属性:<s:property value="stu"/><br/>
通过ognl获取action中的对象属性中的属性(通过属性名称):<s:property value="stu.uname"/><br/>
通过ognl获取action中的对象属性中的属性(通过调用方法):<s:property value="stu.getUname()"/><br/>
通过ognl获取action中的对象属性中的对象:<s:property value="stu.dog"/><br/>
通过ognl获取action中的对象属性中的对象的属性(调用属性名称):<s:property value="stu.dog.dname"/><br/>
通过ognl获取action中的对象属性中的对象的属性(调用方法):<s:property value="stu.getDog().getDname()"/><br/>

调用静态方法需打开访问权限
<!-- 打开struts的静态方法访问 -->
	<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>

<!-- 通过ognl调用action中的普通方法 -->
通过ognl调用action中的普通方法:<s:property value="getSum(10,11)"/><br/>
通过ognl调用action中的静态方法:<s:property value="@com.sw.action.OgnlAction@sayHello()"/><br/>
通过ognl调用action中的静态属性:<s:property value="@com.sw.action.OgnlAction@sum"/><br/>
通过ognl调用API中的静态属性:<s:property value="@@PI"/><br/>
通过ognl调用API中的静态方法:<s:property value="@@max(10,18)"/><br/>


<!-- 通过ognl获取作用域中的List集合 -->
通过ognl获取集合中的所有对象:<s:property value="#request.list"/><br/>
通过ognl获取集合中的所有对象的某一个属性:<s:property value="#request.list.{uname}"/><br/>
通过ognl获取集合中的所有对象中的某一个对象:<s:property value="#request.list[0]"/><br/>
通过ognl获取集合中的所有对象中的中狗的对象:<s:property value="#request.list.{dog}[0].dname"/>

<!-- 使用ognl遍历对象中的某个属性 -->
<s:iterator value="#request.list.{dog}" var="li">
	<s:property value="#li.dname"/>
</s:iterator><br/>


<!-- 通过ognl获取作用域中的set集合 -->
通过ognl获取集合中的所有对象:<s:property value="#request.set"/><br/>
通过ognl获取集合中的中的某一个对象:<s:property value="#request.set.iterator().next()"/><br/>
通过ognl获取集合中的中的所有对象的某一个属性:<s:property value="#request.set.{uname}[0]"/>
<s:iterator value="#request.set" var="set">
	<s:property value="#set.dog.dname"/>
</s:iterator><br/>

<!-- 通过ognl获取作用域中的map集合 -->
通过ognl获取集合中的所有对象:<s:property value="#request.map"/><br/>
通过ognl获取集合中的所有的键:<s:property value="#request.map.keySet()"/><br/>
通过ognl获取集合中的所有的值:<s:property value="#request.map.values().{dog}.{dname}"/><br/>

<s:iterator value="#request.map.values()" var="map">
	<s:property value="#map.uname"/>
</s:iterator>



<!-- 下拉菜单 
	list:保存数据的集合
	listKey:下拉列表的value
	listValue:下拉列表的文本内容
	name="stu.pid"
-->

<s:form action="ognlAction_add.action" method="post">
	 <s:select name="stu.pid" list="#request.province" listKey="pid" listValue="pname"></s:select>
	
	<!-- 复选框 -->
	<s:checkboxlist name="stu.hobby" list="#request.hobbies" listKey="hid" listValue="hname"></s:checkboxlist><br/>
	
	<s:radio name="stu.sex" list="#request.province" listKey="pid" listValue="pname"></s:radio>
	<input type="submit" value="提交">

</s:form>

作用为输出其中值栈的内容,并在网页中显示堆栈上下文的详细信息。
<s:debug></s:debug>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值