struts2 之五:通用标签

前言

Struts2框架为我们提供了许多标签,这些标签从总体上可以分为两类:通用标签和ui标签。而较常使用的是通用标签,通用标签又分为两类,数据标签和控制标签。数据标签用于访问值栈中的数据。控制标签用于控制呈现页面时数据执行流程。

不过使用structs2标签,需要在jsp首部加入如下代码

<%@ taglib uri=”/struts-tags” prefix=”s” %>

数据标签
主要用于访问actioncontext和值栈中的数据

一:property标签

格式:

如果value中的内容为object,则Struts2都会把它解析成ognl表达式
如果里面需要表示为字符串,则需要将内容用单引号括起来

1、 利用ognl表达式取值(例如:取值堆栈中的username值)

1
<s:property value="username"/>

2、 取值为字符串
需要将内容用单引号括起来

1
<s:property value="’username’"/>

3、 设置默认值-default
如果一个对象值取不到,则可以使用default设置一个默认值。

1
<s:property value="admin" default=”管理员”/>

4、 设定HTML-escape
是否设置返回值为HTML原代码样式
true:解析返回值的html代码 false:原封不动返回值

1
<s:property value="'<hr/>'" escape="false"/>

二、 set标签
注:var 用于设定变量名
value 变量值(可以是ognl表达式),也可以是字符串
scope 就是的作用范围 request session page application action(默认)

1
2
3
4
5
6
7
8
9
<li>set 设定adminName值(默认为request 和 ActionContext): <s:set var="adminName"value="username" /></li>
<li>set 从request取值: <s:property value="#request.adminName" /></li>
<li>set 从ActionContext取值: <s:property value="#adminName" /></li>
<li>set 设定var,范围为ActionContext: <s:set var="adminPassword" value="password"scope="session"/></li>
<li>set 使用#取值: <s:property value="#adminPassword"/> </li>
<li>set 从相应范围取值: <s:property value="#session.adminPassword"/> </li>

控制标签
一: If elseif else

1
2
3
4
5
age = <s:property value="#parameters.age[0]" /> <br />
<s:set var="age" value="#parameters.age[0]" />
<s:if test="#age < 0">wrong age!</s:if>
<s:elseif test="#parameters.age[0] < 20">too young!</s:elseif>
<s:else>yeah!</s:else><br />

二:Iterator标签
一般格式如下

1
2
<s:iterator value="值" var="x">
<s:property value="#x.username" />

这个格式将集合里的内容取出
该属性一般有三个属性,id,status,value
其中value属性指定迭代的集合,status属性可以获得迭代中一个状态信息(比如索引值,是否是奇偶数等)

1
2
3
4
5
6
7
8
<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
<s:property/> |
遍历过的元素总数:<s:property value="#status.count"/> |
遍历过的元素索引:<s:property value="#status.index"/> |
当前是偶数?:<s:property value="#status.even"/> |
当前是奇数?:<s:property value="#status.odd"/> |
是第一个元素吗?:<s:property value="#status.first"/> |
是最后一个元素吗?:<s:property value="#status.last"/>

热评文章