Struts2学习——(七)Struts2标签I
2015-12-07 14:40
477 查看
一 介绍
1.Struts2的作用
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。
Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。
Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术
中使用。包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用
2.Struts2分类
(1)UI标签:(User Interface, 用户界面)标签,主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签
(2)非UI标签,主要用于数据访问,逻辑控制等的标签。非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标
签(主要包括用户输出ValueStack中的值,完成国际化等功能的)
(3)ajax标签
(4)表单标签:主要用于生产HTML页面的form元素以及普通表单元素的标签
(5)非表单标签:主要用于生成页面上的树、Tab等标签
3.Struts2标签使用前的准备:
(1)在要使用标签的jsp页面引入标签库:
<%@ taglib uri="/struts-tags" prefix="s"%>
二、具体
1.控制标签
①if/elseif/else标签
<s:if test=""><s:if/>
<s:elseif test=""><s:elseif/>
<s:else test=""><s:else/>
在test中是用来比较的表达式。
②iterator
<s:iterator value="集合或list或map" var="xxx">
<s:property value="xxx..." />
</s:iterator>
迭代输出标签。value表示被遍历的集合,var表示取出的一个值放在该变量下,如果缺省,则property标签中不必有value默认输出。还有以下参数:status,默认false,如果被设置,则利用该参数可以判断当前迭代元素的属性比如index,每次迭代时会生成一个iteratorStatus实例放入堆栈。
begin:开始迭代的位置;end:结束迭代的位置;step:迭代的步长。
③append
用于将多个集合对象拼接起来,从而使得可以用一个iterator遍历多个集合。其中必须要包含一个Id属性,用来表示拼接之后的集合对象。
该标签可以将指定字符串按指定分隔符分割成多个字串。生成的多个字串可以用iterator标签进行迭代输出。可以这么理解:generator标签将一个字符串转换成一个List集合。在该标签体内,整个临时生成的集合将为Valuestack的顶端,但一旦该标签结束,生成的集合将被移除Valuestack。
1、count属性:指定生成集合中元素的总数。可选属性。
2、val属性:必填属性,指定被解析的字符串。
3、separator属性:这是一个必填属性,指定用于分割字符串的分隔符。
4、converter属性:可选属性,指定一个转换器,转换器负责将生成的集合中的每个字符串转换成对象,通过这个转换器可以将一个含有分隔符的字符
串解析成对象的集合。转换器必须一个继承org.apache.struts2.util.IteratorGenerator.Converter的对象。
5、var属性,可选属性。如果指定了该属性,则将生成的集合保存在Stack Context中。如果不指定该属性,则将生成的集合放入ValueStack的顶端,
该标签一结束,生成的集合就被移除。该属性也可替换成id。
十分类似append,但是连接顺序不同。
append的连接顺序是:
第一个集合第一个元素
第一个集合第二个元素
第一个集合第三个元素
第二个集合第一个元素
第二个集合第二个元素
第二个集合第三个元素
...
merge的连接顺序是:
第一个集合的第一个元素
第二个集合的第一个元素
第一个集合的第二个元素
第二个集合的第二个元素
第一个集合的第三个元素
第二个集合的第三个元素
⑥subset
用于取得标签的子集。
<s:subset source="{'xxx','ccc','aaa'}" var="x" start="1" count="3" id="xxx"></s:subset>
⑦sort
用于对指定的集合元素进行排序。需要自己指定比较方法。
首先需要创建自己的Comparator。自己的比较方法类需要继承Comparator接口,覆写其中的compare()方法。
该标签包含的属性有:
comparator:设置比较器。一般来说,在sort标签之前,会用bean标签创建一个自己的比较方法类的bean对象,将该对象值放在该属性下
source:需要排序的集合对象
eg:
1.Struts2的作用
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。
Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。
Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术
中使用。包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用
2.Struts2分类
(1)UI标签:(User Interface, 用户界面)标签,主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签
(2)非UI标签,主要用于数据访问,逻辑控制等的标签。非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标
签(主要包括用户输出ValueStack中的值,完成国际化等功能的)
(3)ajax标签
(4)表单标签:主要用于生产HTML页面的form元素以及普通表单元素的标签
(5)非表单标签:主要用于生成页面上的树、Tab等标签
3.Struts2标签使用前的准备:
(1)在要使用标签的jsp页面引入标签库:
<%@ taglib uri="/struts-tags" prefix="s"%>
二、具体
1.控制标签
①if/elseif/else标签
<s:if test=""><s:if/>
<s:elseif test=""><s:elseif/>
<s:else test=""><s:else/>
在test中是用来比较的表达式。
②iterator
<s:iterator value="集合或list或map" var="xxx">
<s:property value="xxx..." />
</s:iterator>
迭代输出标签。value表示被遍历的集合,var表示取出的一个值放在该变量下,如果缺省,则property标签中不必有value默认输出。还有以下参数:status,默认false,如果被设置,则利用该参数可以判断当前迭代元素的属性比如index,每次迭代时会生成一个iteratorStatus实例放入堆栈。
begin:开始迭代的位置;end:结束迭代的位置;step:迭代的步长。
③append
用于将多个集合对象拼接起来,从而使得可以用一个iterator遍历多个集合。其中必须要包含一个Id属性,用来表示拼接之后的集合对象。
<span style="font-size:14px;">public class AppendIteratorTagAction extends ActionSupport { private List myList1; private List myList2; private List myList3; public String execute() throws Exception { myList1 = new ArrayList(); myList1.add("1"); myList1.add("2"); myList1.add("3"); myList2 = new ArrayList(); myList2.add("a"); myList2.add("b"); myList2.add("c"); myList3 = new ArrayList(); myList3.add("A"); myList3.add("B"); myList3.add("C"); return "done"; } public List getMyList1() { return myList1; } public List getMyList2() { return myList2; } public List getMyList3() { return myList3; } }</span>
<span style="font-size:14px;"><ww:append id="myAppendIterator"> <ww:param value="%{myList1}" /> <ww:param value="%{myList2}" /> <ww:param value="%{myList3}" /> </ww:append> <ww:iterator value="%{#myAppendIterator}"> <ww:property /> </ww:iterator></span>④generator
该标签可以将指定字符串按指定分隔符分割成多个字串。生成的多个字串可以用iterator标签进行迭代输出。可以这么理解:generator标签将一个字符串转换成一个List集合。在该标签体内,整个临时生成的集合将为Valuestack的顶端,但一旦该标签结束,生成的集合将被移除Valuestack。
1、count属性:指定生成集合中元素的总数。可选属性。
2、val属性:必填属性,指定被解析的字符串。
3、separator属性:这是一个必填属性,指定用于分割字符串的分隔符。
4、converter属性:可选属性,指定一个转换器,转换器负责将生成的集合中的每个字符串转换成对象,通过这个转换器可以将一个含有分隔符的字符
串解析成对象的集合。转换器必须一个继承org.apache.struts2.util.IteratorGenerator.Converter的对象。
5、var属性,可选属性。如果指定了该属性,则将生成的集合保存在Stack Context中。如果不指定该属性,则将生成的集合放入ValueStack的顶端,
该标签一结束,生成的集合就被移除。该属性也可替换成id。
<s:generator val="'a,b, c'" separator="," id="iter1"> </s:generator> <s:iterator status="st" value="#request.iter" id="name"> <tr > <td><s:property value="name"/></td> </tr> </s:iterator>⑤merge
十分类似append,但是连接顺序不同。
append的连接顺序是:
第一个集合第一个元素
第一个集合第二个元素
第一个集合第三个元素
第二个集合第一个元素
第二个集合第二个元素
第二个集合第三个元素
...
merge的连接顺序是:
第一个集合的第一个元素
第二个集合的第一个元素
第一个集合的第二个元素
第二个集合的第二个元素
第一个集合的第三个元素
第二个集合的第三个元素
⑥subset
用于取得标签的子集。
<s:subset source="{'xxx','ccc','aaa'}" var="x" start="1" count="3" id="xxx"></s:subset>
⑦sort
用于对指定的集合元素进行排序。需要自己指定比较方法。
首先需要创建自己的Comparator。自己的比较方法类需要继承Comparator接口,覆写其中的compare()方法。
该标签包含的属性有:
comparator:设置比较器。一般来说,在sort标签之前,会用bean标签创建一个自己的比较方法类的bean对象,将该对象值放在该属性下
source:需要排序的集合对象
eg:
import java.util.Comparator; public class MyComparator implements Comparator<Object>{ @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method stub if((String.valueOf(o1).length())>(String.valueOf(o2).length())){ return 1; } return -1; } }
<s:bean name="cn.wqy.MyComparator" id="myComparator"></s:bean> <s:sort comparator="#myComparator" source="{'assd','zcs','ab'}"> <s:iterator var="tmp"> <s:property value="tmp"/> </s:iterator> </s:sort>
相关文章推荐
- java实现126邮箱邮件发送,使用stmp协议
- 基于SpringMVC框架,完成用户的增,删,改,查,以及json数据处理
- Mybatis+SpringMVC+注解事务遇到的一些问题及解决
- 剖析Java中阻塞队列的实现原理及应用场景
- myeclipse项目文件结构浏览模式配置
- java中多种排序算法总结
- eclipse如何去掉无用的validation、优化eclipse
- spring quartz 时间配置格式
- 深入理解Java线程编程中的阻塞队列容器
- java ++i 和 i++
- java ++i 和 i++
- springmvc事务@Transactional到底能不能用在controller上。答案是可以的
- Java实现将GBK编码格式的文件夹中所有文件都转化为UTF-8格式的文件,编码格式转化
- java泛型程序设计——类型变量限定 + 泛型代码和虚拟机
- Java 学习历程(二)面向对象编程
- java 基础(异常练习)
- java多线程--线程中断
- Windows+JDK6环境配置
- Eclipse编辑jsp、js文件时出现卡死解决方案~
- Spring+Springmvc+MyBatis整合