Struts2:从值栈获取数据

从值栈获取字符串

<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域获取不到值,到值栈中把值获取出来,把值放到域对象里面
发布了202 篇原创文章 · 获赞 37 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/lovecuidong/article/details/97656058