Struts2:从值栈获取数据

本文详细介绍了如何在Struts2框架中从值栈获取不同类型的数据,包括字符串、对象和list集合。通过三种方法——按下标、使用<s:iterator>标签以及OGNL表达式遍历,演示了获取过程。同时,讨论了EL表达式获取值栈数据的原理,并展示了setAttribute和getAttribute方法在域对象中的应用。

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

从值栈获取字符串

<s:property value="name"/>

从值栈获取对象

账号: <s:property value="user.username"/><br/>
密码: <s:property value="user.password"/><br/>
地址: <s:property value="user.address"/><br/>

从值栈获取list集合
方法一:根据下标获取

<s:property value="list[0].username"/>
<s:property value="list[0].password"/>
<s:property value="list[0].address"/>
<br/>
<s:property value="list[1].username"/>
<s:property value="list[1].password"/>
<s:property value="list[1].address"/>
<br/>

方法二:根据struts2标签<s:iterator>迭代

<s:iterator value="list">
 	<!-- 遍历list得到list里面每个user对象 -->
 	<s:property value="username"/>
 	<s:property value="password"/>
 	<s:property value="address"/>
 	<br/>
</s:iterator>

方法三:通过ognl表达式与struts2标签遍历

<s:iterator value="list" var="user">
<!-- 遍历值栈list集合,得到每个user对象
	机制: 把每次遍历出来的user对象放到 context里面
	获取context里面数据:使用ognl表达式,前面加特殊符号 #
	放在context里面,避免空间浪费 -->
	<s:property value="#user.username"/>
	<s:property value="#user.password"/>
	<s:property value="#user.address"/>
	<br/>
</s:iterator>

获取使用set方法存值得数据

<s:property value="name"/>

获取使用push方法存值得数据

  1. 使用push方法设置值,没有名称,只有设置的值
  2. 向值栈放数据,把向值栈放数据存到数组里面,数组名称top,根据数组获取值
  3. 根据数组下标获取值,遵循先进后出原则
<s:property value="[0].top"/>

为什么EL表达式可以获取值栈数据?

<c:out value="${itcast}"></c:out>
  1. EL表达式获取域对象值
  2. 向域对象里面放值使用setAttribute方法,获取值使用getAttribute方法
  3. 底层增强request对象里面的方法getAttribute方法
  • 首先从request域获取值,如果获取到,直接返回
  • 如果从request域获取不到值,到值栈中把值获取出来,把值放到域对象里面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值