要使用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>