首页 > WEB开发 > 后台开发 > Struts2常用标签
2014
09-16

Struts2常用标签

05. Struts2常用标签12

打开struts-2\docs\WW\tag-reference.html可以看到Struts2提供的所有标签。其中分为“通用标签”和“UI标签”两大部分。如下图:

05. Struts2常用标签97

05. Struts2常用标签100

一、通用标签

1、数据标签

1)<s:property>:用来执行OGNL表达式,最为常用的方式是使用它在页面中输出ValueStack或ActionContext中的数据。

如:<s:property value=”#request.hello”/> 等同于ActionContext.getContext().getRequest(). get(“hello”)。

property标签

2)<s:url>:通常用来生成action路径,它与<c:url>标签很相似。用法如下:

<!-- ① 基本用法,输出/struts2_ValueStack/act2.action -->
<s:url action="act2" /><br />

<!-- ② 指定名称空间,输出/struts2_ValueStack/demo/act2.action -->
<s:url action="act2" namespace="/demo" /><br />

<!-- ③ 为URL指定参数,输出:
/struts2_ValueStack/act2.action?username=%E5%BC%A0%E4%B8%89 -->
<s:url action="act2">
	<s:param name="username" value="'张三'" />
</s:url><br />

说明:

① 使用<s:url>标签生成action路径时会自动加上后缀

② <s:param>的value属性值为Ognl表达式,所以我们需要把“张三”用单引号引起来,表示Ognl表达式的字符串常量。

url标签

3)<s:debug>

Debug标签用于调试,它在页面中生成一个“[Debug]”超链接,单击这个超链接,可以查看ValueStack和ActionContext中保存的所有对象。

4)<s:set>:用来创建一个变量,保存到指定的范围内。如:

<s:set var=”myVar” value=”#parameters.score[0]” scope=”page”/>,创建一个变量,保存到page范围,key为myVar,值为“#parameters.score[0]”的运算结果。

注:scope的默认值为action,它表示保存到request和context两个范围中。

<s:set var=”myVar” value=”#parameters.score[0]” />
<s:property value=”#myVar”/> 等同于ActionContext.getContext().get(“myVar”);
<s:property value=”#request.myVar”/>等同于ActionContext.getContext.getReuqest().get(“myVar”);

5)<s:push>:把指定值暂时压入到值栈中,当执行完<s:push>标签后,压入到值栈中的值会被弹出。

<s:push value=”’hello’”/>等于把hello字符串压入到值栈中后,马上又弹出了,相当于什么都没做。

<s:push value=”#session.user”>把user压入到值栈中

<s:property value=”username”/>打印值栈元素的username属性

<s:property value=”password”/>打印值栈元素的password属性

</s:push>把user从值栈中弹出

2、控制标签
1)<s:if>、<s:elseif>、<s:else>:太熟悉了,看例子即可

<!-- 浏览器访问:
http://localhost:8080/struts2_ValueStack/index.jsp?score=90,页面输出:90: 优秀 -->

<s:set name="score" value="#parameters.score[0]"/>
<s:property value="#score"/>:
<s:if test="#score>100 || #score<0">
	<s:property value="'输入错误'"/>
</s:if>
<s:elseif test="#score>=90">
	<s:property value="'优秀'"/>
</s:elseif>
<s:elseif test="#score>70">
	<s:property value="'合格'"/>
</s:elseif>
<s:else>
	<s:property value="'未通过,重考吧'"/>
</s:else>
<s:debug></s:debug>

2)<s:iterator>:类似于<c:foreach>

iterator标签在迭代过程中,会把当前对象暂时压入值栈,这样在子标签中就可以直接访问当前对象的属性(因为当前对象在栈顶),第一次循环结束后,位于栈顶的对象就会被删除,在第二次循环时,把新的当前对象再压入值栈中。每次循环,都将执行一遍压入/弹出。

<s:iterator value="{'zhangSan','liSi','wangWu' }">
	name: <s:property/><br/>
</s:iterator>

如果为<s:iterator>标签指定了var属性,那么当前对象不只是压入到了值栈中,而且还会被添加到context中。

<s:iterator value="{'zhangSan','liSi','wangWu' }" var="name">
	name: <s:property value="#name"/><br/>
</s:iterator>

iterator标签

status属性类似于<c:foreach>中的varStatus,用于记录当前迭代信息。

IteratorStatus类常用方法有:getCount、getIndex、isEven、isOdd、isFirst、isLast。在OGNL表达式中使用IteratorStatus类的方法时,可以直接使用:count、index、even、odd、first、last属性。


留下一个回复

你的email不会被公开。