一、标签库的组成
Struts2框架的标签库可以分为以下三类
1.用户界面标签(UI标签)
主要用来生成HTML元素的标签。
a.表单标签
主要用于生成HTML页面的FORM元素以及普通表单元素的标签。
b.非表单标签
主要用于生成页面上的tree、Tab页等。
2.非用户界面标签(非UI标签)
主要用于数据访问逻辑控制。数据访问标签主要包含用于输出值栈(ValueStack)中的值。流程控制标签,主要包含用于实现分支,循环等流程控制的标签。
二、标签的属性都可以使用OGNL表达式,struts2标签的属性具有类型,这些类型可以简单地分为字符串类型和非字符串类型。对于字符串类型的属性,如果要访问动态数据,需要使用%{… }这样的语法。
<s:if test="'foo1' in {'foo1','foo2'}">
包含
</s:if>
<s:else>
不包含
</s:else>
三、Struts2中通用标签可以分为二类:控制标签和数据标签。控制标签用于呈现页面时控制执行流程,数据标签用于访问值栈中的数据
数据标签:
property set push param bean action include url
1. Set 标签将一个值赋给指定范围内变量。Set标签在某些情况下是比较有用的,例如在页面中多次引用一个复杂的表达式,我们可以将这个表达式赋给一个变量。然后直接引用变量。name value scope三个属性。scope的取值是application || session || page || request || action
<s:set name="name" value="testname"/>
<s:property value="#name" />
2.property 标签用于输出值栈中的对象的属性(property)值,使用value属性来指定要输出的对象属性。如果没有指定value属性。那么默认输出栈顶对象
<s:property value=“username” default=“游客” />
在ation中定义一个字段username有get和set方法;
jsp页面输出<s:property value="%{username}" />
控制标签:
控制标签用于完成流程控制,例如分支,循环等操作。控制标签包含下面几个
if:用于控制选择输出。
elseif:同if标签结合使用用来控制选择输出。
else:同if标签结合使用用来控制选择输出。
append:用来将多个集合拼接为一个新的集合。
generator:为一个字符串解析器用来将一个字符串解析为一个集合。
iterator:迭代器用来迭代输出集合数据。
merge:用来将多个集合拼接为一个新的集合,同append有所区别。
sort:用来对集合排序。
subset用来截取集合的部分集合开成新的集合子集合
IF:用于控制选择输出。
<s:set name="age" value="61"/> <s:if test="${age > 60}">老年人</s:if> <s:elseif test="${age > 35}"> 中年人</s:elseif> <s:elseif test="${age > 15}" id="wawa">青年人</s:elseif> <s:else>少年</s:else>
iterator:迭代器用来迭代输出集合数据。
<table border="1" width="300"> <tr> <th>当前元素</th> <th>当前迭代的元素的总数</th> <th>当前迭代的元素的索引</th> <th>当前迭代的元素是否是偶数</th> <th>当前迭代的元素是否是奇数</th> <th>当前迭代的元素是否是第一个元素</th> <th>当前迭代的元素是否是最后一个元素</td> </tr> <s:iterator value="{'javascript','css','html','jsp','php','asp.net'}" id="test" status="status"> <tr> <td><s:property/></td> <td><s:property value="#status.count"/></td> <td><s:property value="#status.index"/></td> <td><s:property value="#status.even"/></td> <td><s:property value="#status.odd"/></td> <td><s:property value="#status.first"/></td> <td><s:property value="#status.last"/></td> </tr> </s:iterator> </table>
append:用来将多个集合拼接为一个新的集合
Merge标签用于合并迭代器其用法与append相似区别就是对合并后的迭代器中的元素迭代的顺序不一样
表单标签:
Struts2的表单标签可以分为两类form标签本身和包装HTML表单元素的其他标签。form标签本身的行为不同于它内部的元素