您的位置:首页 > 编程语言 > Java开发

Struts2笔记五之Struts标签

2014-08-13 23:06 501 查看
1、页面使用Struts标签需要引入<%@taglib uri="/struts-tags" prefix="s" %>

2、Struts2标签简介

1.通用标签

1) property

2) set

a)默认为action scope, 会将值放入reques和ActionContext中。

b)page,request,session,application

3)bean

4)include对中文文件支持有问题,不建议使用,如需包含,改用jsp包含

5)param

6)debug

2.控制标签

1)if elseif else

2)iterator

collection map enumeration iterator array

3)subset

3.$#%的区别

1)$用于i18n和struts配置文件

2)#取得ACtionContext的值

3)%将原本的文本属性解析为ognl,对于本来就是obnl的属性不起作用

参考<s:property>和<s:include>

3、详细说明:

1.<s:property>标签

<!-- 这里的username是ognl表达式 -->

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

<!-- 这里的username是String字符串 -->

property 取值为字符串: <s:property value="'username'"/>

<!-- 从值栈中取admin,取到值,就用这个值,如果取不到,就用默认值"管理员" -->

property 设定默认值: <s:property value="admin" default="管理员"/>

<!-- escape默认是true,如果为true,那么value中的<hr/>会作为字符串在页面上显示,如果设置为false,那么会以html格式输出 -->

property 设定HTML: <s:property value="'<hr/>'" escape="false"/>

2.<s:set>标签

<!-- 这里定义了一个变量adminName,值为username的Object,范围是request和ActionContext -->

set 设定adminName值(默认为request 和 ActionContext): <s:set var="adminName" value="username" />

set 从request取值: <s:property value="#request.adminName" />

set 从ActionContext取值: <s:property value="#adminName" />

<!-- set的5个范围 application、session、request、page和action,以下是比较老的写法,name已经被废弃了,现在只用var-->

set 设定范围: <s:set name="adminPassword" value="password" scope="page"/>

set 从相应范围取值: <%=pageContext.getAttribute("adminPassword") %>

<!-- 定义一个变量adminPassword,value为password,范围为session -->

set 设定var,范围为ActionContext: <s:set var="adminPassword" value="password" scope="session"/>

<!-- #取值是从ActionContext,因为如果不设定范围会默认放入ActionContext,故可以直接#从ActionContext取值 -->

set 使用#取值: <s:property value="#adminPassword"/>

<!-- 如果设置了范围,#直接取值就取不到了,需要从范围中取值 -->

set 从相应范围取值: <s:property value="#session.adminPassword"/>

3.<s:bean>标签

bean 定义bean,并使用param来设定新的属性值,下面这句话表示new了一个新的Dog对象,但是需要赋值给变量var,否则这个对象在</s:bean>这里就消失了,

所以不设置var,但要用到这个对象需要在<s:bean>里面赋值和取值使用。

<s:bean name="com.edifier.struts2.tags.Dog" >

<s:param name="name" value="'pp'"></s:param>

<s:property value="name"/>

</s:bean>

下面这句话表示new了一个新的Dog对象,并赋值给变量myDog,存放在ActionContext里面

<s:bean name="com.edifier.struts2.tags.Dog" var="myDog">

<!-- name对应的name是Dog类中的属性,给其赋值为oudy,为了防止oudy被认为是ognl表达式,应该写成'oudy'这样就是字符串了。 -->

<s:param name="name" value="'oudy'"></s:param>

</s:bean>

拿出值:

<s:property value="#myDog.name"/>

4.<s:include>标签(少用,因为对于引入中文文件会出问题。)

include _include1.html 包含静态英文文件

<s:include value="/_include1.html"></s:include>

include _include2.html 包含静态中文文件

<s:include value="/_include2.html"></s:include>

include _include1.html 包含静态英文文件,说明%用法%{}强制将花括号里面的内容转换为ognl表达式

<s:set var="incPage" value="'/_include1.html'" />

<s:include value="%{#incPage}"></s:include>

5.<s:if>,<s:elseif>,<s:else>标签

if elseif else和java中的用法基本一样test中写需要判断的内容

age = <s:property value="#parameters.age[0]" /> <br />

<s:set var="age" value="#parameters.age[0]" /> <!-- 这里利用s:set将#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 />

<s:if test="#parameters.aaa == null"> null </s:if>

6.<s:iterator>标签

遍历集合:

<s:iterator value="{1, 2, 3}" > <!-- 在ognl表达式中{}表达集合 -->

<s:property/> |

</s:iterator>

要用<s:iterator>遍历集合很简单,value中存放集合,然后用<s:property/>依次取值

自定义变量,将取出来的每一个值放在变量x中,因为x(x为ognl表达式)是字符串所以可以调用toUpperCase()方法变成大写

<s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">

<s:property value="#x.toUpperCase()"/> |

</s:iterator>

使用status,status表示状态,即每次循环的一些状态

<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"/>

<br />

</s:iterator>

ognl表达式定义Map格式为:#{1:'a', 2:'b', 3:'c'},#{key:value,key:value,key:value...}

iterator遍历Map 1

<s:iterator value="#{1:'a', 2:'b', 3:'c'}" >

<s:property value="key"/> | <s:property value="value"/> <br />

</s:iterator>

iterator遍历Map 2

<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">

<s:property value="#x.key"/> | <s:property value="#x.value"/> <br />

</s:iterator>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: