版权声明:本文为博主原创文章,未经博主允许不得转载。
Struts2可以将所有标签分成3类:
准备工作:需要在JSP页面引入标签库
<%@ taglib prefix="s" uri="/struts-tags" %>
1.<s:set/>标签
<!-- 用法一 相当于 ActionContext.getContext().put(key, value) -->
<s:set name="name" value="'caoyc'"/> <!-- 这里name是字符串形式,所有value值需要加单引号 ,如果不加单引号,该变量的值为null-->
<s:set name="age" value="20"></s:set>
<s:property value="#name"/>
<s:property value="#age"/> <!-- 用法二 指定scope范围 :application、session、request、page或action--><br/>
<s:set name="name2" value="'zhh'" scope="request"/> <!-- 相当于ServletActionContext.getRequest().setAttribute("name2", "zhh") -->
<s:property value="#request.name2"/>
2.<s:property/>标签
(1)从Action栈中的属性获取,要求有getXXX()方法
<s:property value="name"/>
(2)从Action栈中获取对象的属性,要求为该对象属性获取getXXX方法
<s:property value="user.name"/>
(3)访问Action栈中对象方法
<s:property value="user.toString()"/>
(4)访问Action的普通方法
<s:property value="methodName()"/>
(5)访问list集合第一个元素的name属性
<s:property value="#list[0].name"/>
(6)根据key访问Map中的元素
<s:property value="mapName.username"/>
<s:property value="mapName['username']"/>
<s:property value="mapName[/"username/"]"/>
(7)访问request中请求的参数
<s:property value="#parameters.username"/>
<s:property value="#parameters['username']"/>
3、<s:if><s:elseif></s:else>标签
<s:set name="level" value="20 "/>
<s:if test="#level<=12">
小学
</s:if>
<s:elseif test="#level>12 && #level<=15">
初中
</s:elseif>
<s:elseif test="#level>15 && #level<=18">
高中
</s:elseif>
<s:elseif test="#level>18 && #level<=24">
大学
</s:elseif>
<s:else>
硕士及其以上
</s:else>
4、<s:iterator>标签
方式一:这种方式:每当迭代一次,struts就会将迭代器当前对象添加到Root栈的栈顶,所以可以直接通过属性名,访问该对象的属性,每次迭代完后该对象就会自动消失
<s:iterator value="persons">
<s:property value="name"/>
<s:property value="age"/>
</s:iterator>
方式二:指定了var属性,同样会在Root栈的栈顶添加该对象,同时也会复制一份到ActionContext对象中,所以可以通过下面方式访问
<s:iterator value="persons" var="p">
<s:property value="#p.name"/> <!-- 通过ActionComtext方法 -->
<s:property value="age"/> <!-- 通过Root栈访问 -->
</s:iterator>