struts2如何获取数据

数据放在何处

在struts2里,所有的数据都放在ActionContext里。用《struts2技术内幕》里面的话来说,就是ActionContext从它的名字看就可以知道它是用来存储数据的(因为是上下文嘛)。



如何访问数据

ActionContext里面的数据分2种,一种是根对象,一种当然是非根对象。

1、根对象,访问的时候不需要加#。

示例,

<s:property value="对象.属性"/>


2、非根对象,访问的时候需要加#。

示例,

<table width="100%">
				<s:iterator status="idz" value="listtask"> <!-- 说明:遍历集合,好比for(String s: 集合):所以,一个属性是集合,一个属性是当前的对象(只不过在strust2标签里,多了其他的用处,比如#对象.index/count)! -->
				<s:if test="listtask.get(#idz.index)[1] > 0"> <!-- 说明:1.XXXAction的对象属性(即ActionContext/OGNL上下文里的对象/数据):以深度引用的方式访问,即对象.属性     2.而非ActionContext/OGNL上下文里的对象,以#对象.属性的方式来访问:例如,set标签,设置的数据;迭代标签,集合的当前对象 -->
				<tr>
					<td colspan="2" bgcolor="#99BBE8"><b> 项目名称:<s:property value="listtask.get(#idz.index)[0]"/> </b></td>
					<!-- 
					<td bgcolor="#99BBE8"><b style="color: green"> 已结单:<s:property value="listtask.get(#idz.index)[2]"/> </b></td>
					<td bgcolor="#99BBE8"><b style="color: red"> 未结单: <s:property value="listtask.get(#idz.index)[1]"/> </b> </td>
					 -->
					<td bgcolor="#99BBE8"> </td>
				</tr>
				<tr>
					<td colspan="5">
						<s:property escape="false" value="@com.XXX.projectmanagerweb.report.count.ReportCountAction@getTaskAllinfo(#session.user.username,listtask.get(#idz.index)[0])" /><!-- 说明:1.HttpServletRequest request/HttpSession session/ServletContext application,都在ActionContext/OGNL上下文里的对象,所以可以以#对象.属性.属性的方式访问    2. #对象.属性,这种方式访问是struts2标签里才可以使用;而刚才的那9个的jsp隐含对象,都可以在.jsp里的脚本代码里直接访问它和它的属性!-->
					</td>
				</tr>
				</s:if>
				</s:iterator>
				</table>



什么是根对象

1、只有ValueStack里面的数据才是根对象;

Action的属性都属于ValueStack里的数据/对象。


2、其他的对象都不是根对象,

1)请求、会话、应用程序上下文都不是根对象。

2)迭代一个集合时的临时对象(即当前对象)也不是根对象,访问时也需要加#(见上面的例子)。



ValueStack里的所有的数据(或者说对象)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值