要使用struts2的标签库,需要引入以下这个语句:
<%@ taglib uri="/struts-tags" prefix="s"%>
一.控制标签
1.if/elseif/else标签
<body>
<s:set name="age" value="30"></s:set>
<s:if test="#age>60">老年</s:if>
<s:elseif test="#age>35">中年</s:elseif>
<s:elseif test="#age>13">青年</s:elseif>
<s:else>少年</s:else>
</body>
2.iteractor标签
可以指定以下三个属性
(1)value:这是一个可选的属性,指定被迭代的集合,被迭代的集合通常是使用OGNL表达式指定.如果没有value属性,则使用ValueStack栈顶的集合
(2)id: 可选元素,指定了集合元素的ID
(3)status:可选属性,指定迭代器的IteratorStatus实例
<table border="1" width="300"> <s:iterator value="{'aaa','bbb','ccc'}" id="name" status="st"> <tr> <td> <s:property value="name"></s:property> </td> <td> <s:property value="#st.count"></s:property> </td> </tr> </s:iterator> </table>
<table border="1" width="300"> <s:iterator value="#{'aaa':'AAA','bbb':'BBB','ccc':'CCC'}" id="score" status="st"> <tr> <td> <s:property value="key"></s:property> </td> <td> <s:property value="value"></s:property> </td> </tr> </s:iterator> </table>
3.append标签:能够将多个集合对象拼接起来,组成一个新的集合.通过拼接,可以允许通过一个<s:iterator>标签完成多个集合的迭代
在使用<s:append>标签时,需要指定var属性,也可以使用id
<s:append var="#newlist">
<s:param value="{'AAA','BBB','CCC'}"></s:param>
<s:param value="{'DDD','EEE'}"></s:param>
</s:append>
<table border="1" width="300">
<s:iterator value="#newlist" id="name" status="st">
<tr>
<td>
<s:property value="name"></s:property>
</td>
<td>
<s:property value="#st.count"></s:property>
</td>
</tr>
</s:iterator>
</table>
4.generator标签
根据指定的分隔符将指定的字符串分隔成多个子串,可以使用iterator迭代输出临时生成的多个子串,该标签有以下5个属性
count:可选的属性,该属性指定生成集合中元素的总数
seperator:一个必填的属性,该属性指定用于解析字符串的分隔符
val:必填属性,该属性指定要解析的字符串
convertor:可选属性,将集合中的每个字符串转化为对象
var:可选属性,如果指定了该属性,则将生成的Iterator对象放入Context中
<s:generator val="'A,B,C,D'" separator=','>
<s:iterator>
<s:property/>
</s:iterator>
</s:generator>
<s:generator val="'A,B,C,D'" separator=',' var="book"/>
<s:iterator value="book" var="name">
<s:property value="name"/>
</s:iterator>
</body>
4.merge标签:跟append标签相似,只是拼接的次序不一样
假设有三个集合,append拼接次序如下
(1)第一个集合第一个元素,第一个集合第二个元素,第一个集合第三个元素,....先拼接完一个集合再接着拼接下一个集合
(2)merge则是:第一个集合第一个元素,第二个集合第一个元素,第三个集合第一个元素,第一个集合第二个元素....
5.subset标签:取得集合的子集,有以下属性
count:指定子集中元素的个数
start:指定子集从源集合中哪个元素开始取值
source:指定源集合
<s:subset source="{'aaa','bbb','ccc'}" start='1' count='2'>
<s:iterator>
<s:property/>
</s:iterator>
</s:subset>
二.数据标签
1.action标签:可以允许在jsp页面中直接调用action,有以下属性
name:必填属性,指定调用哪个Action
namespace:指定命名空间
executeResult:可选属性,如果该属性为true,则该标签会将action的处理结果(视图资源)包含到本页面中
var,ignoreContextParams指定是否将页面的请求参数传入调用的action中,默认值为false
<s:action name="login/login" executeResult="true"></s:action>
2.bean标签.
bean标签的功能是创建一个javaBean实例.在创建JavaBean实例时,可以在体内使用<param.../>标签为该Bean实例传入属性,同时应该为该JavaBean类提供对应的setter方法
<s:bean name="model.Person">
<s:param name="username" value="'manting'"></s:param>
<s:param name="age" value="23"></s:param>
<s:property value="username"/>
<s:property value="age"/>
</s:bean>
3.date标签:输出一个格式化的日期
format:日期格式
name:必填属性,指定要格式化的日期值
nice:可选属性,该属性只为true或false,显示指定日期和当前时间的时间差,默认值为false,一般和format不能同时设定
var:指定了该属性,格式化后的字符串将放入StackContex中,并放入requestScope中,不会在页面上输出
<s:date name="#attr.now" format="yyyy年MM月dd日" var="date"/>
${date}
4.form表单标签
1.checkboxlist:可以一次创建多个复选框,功能是一次生成多个HTML标签中的<input type="checkbox">,它根据list属性指定的集合生成多个复选框.
listKey:功能指定集合元素中某个属性为复选框的key
listValue:功能指定集合元素中某个属性作为复选框的value
<s:checkboxlist name="a" list="{'css','htm','java'}" label="请输入选择的科目" lablePosition="top"></s:checkboxlist>
<s:checkboxlist name="a" list="#{'css':'css1','htm':'html1','java':'java1'}" label="请输入选择的科目" lablePosition="top" listKey="key" listValue="value"></s:checkboxlist>
该标签还可以与javaBean类相结合,访问javaBean的属性
public class Book {
private String name;
private String author;
public Book(){}
public Book(String name,String author){
this.name=name;
this.author=author;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
public class BookService { public Book[] getBooks(){ return new Book[]{ new Book("css","张三"), new Book("java","李四"), new Book("html","王五") }; } }
<s:bean name="service.BookService" id="bs"></s:bean>
<s:form>
<s:checkboxlist name="a" list="#bs.books" label="请输入喜欢的科目" lablePosition="top" listKey="name" listValue="author"></s:checkboxlist>
</s:form>
2.combobox标签,下拉框标签
<s:combobox label="选择你喜欢的图书:" theme="css_xhtml" labelposition="top" list="{'dsj','dsjk','wqie'}" name="book"></s:combobox>