您的位置:首页 > 编程语言 > Java开发

struts2如何获取数据

2015-09-15 00:43 459 查看

数据放在何处

在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里的所有的数据(或者说对象)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: