二.五 subset截取标签
<s:subset source="#request.studentList1" count="2" start="2"> <s:iterator status="status"> <tr> <td><s:property value="#status.index+1"/></td> <td><s:property value="id"/></td> <td><s:property value="name"/></td> <td><s:property value="age"/></td> </tr> </s:iterator> </s:subset>
source为要截取的集合的值, start为开始截取的点,从1开始. count为截取的数目
二.六 merge 添加标签(无序添加)
<s:merge var="studentList3"> <s:param value="#request.studentList1"></s:param> <s:param value="#request.studentList2"></s:param> </s:merge> <table> <tr> <th>序号</th> <th>编号</th> <th>姓名</th> <th>年龄</th> </tr> <s:iterator value="studentList3" status="status"> <tr> <td><s:property value="#status.index+1"/></td> <td><s:property value="id"/></td> <td><s:property value="name"/></td> <td><s:property value="age"/></td> </tr> </s:iterator> </table>
添加的时候是没有顺序的,与add用法基本相同。
二.七 sort排序标签
二.七.一 给定数据
<% List<Student> studentList1=new ArrayList<Student>(); studentList1.add(new Student(1,"张三",20)); studentList1.add(new Student(3,"李四",10)); studentList1.add(new Student(5,"王五",40)); studentList1.add(new Student(7,"赵六",30)); request.setAttribute("studentList1",studentList1); %>
二.七.二 需要对Student添加比较器,添加比较器MyComparator
package com.java1234.comparator; import java.util.Comparator; import com.yjl.pojo.Student; public class MyComparator implements Comparator<Student>{ public int compare(Student s1, Student s2) { if(s1.getAge()>s2.getAge()){ return 1; }else if(s1.getAge()<s2.getAge()){ return -1; } return 0; } }
二.七.三 指定bean实例化MyComparator比较器
<s:bean id="myComparator" name="com.java1234.comparator.MyComparator"></s:bean>
二.七.四 在s:iterator循环输出,包括在s:sort标签里面
<tbody> <s:sort comparator="#myComparator" source="#request.studentList1" > <s:iterator status="status"> <tr> <td><s:property value="#status.index+1"/></td> <td><s:property value="id"/></td> <td><s:property value="name"/></td> <td><s:property value="age"/></td> </tr> </s:iterator> </s:sort> </tbody>
三 数据标签库的用法
三.一 property输出标签器
<s:property value="" default="" escapeHtml=""/> <% request.setAttribute("name","<font color='red'>两个蝴蝶飞</font>"); %> 取出作用域中值:<s:property value="#request.name"/> <br/> 没有值为显示默认值:<s:property value="#request.name1" default="没有两个蝴蝶飞"/><br/> 是否忽略html标签为true:<s:property value="#request.name" escapeHtml="true"/><br/> 是否忽略html标签为false:<s:property value="#request.name" escapeHtml="false"/>
默认值是true, 表示将标签当成普通文字输出。 为false时会进行相应的翻译转换。
三.二 set标签的用法
set设置普通的数字时:
没有作用域: <s:set var="name" value="1"></s:set> <s:property value="#name"/> <br/>
注意此时value=“1”
如果设置字符串或者英文字母即非数字时, 如value=“abc”, value="两个蝴蝶飞"时,是无法进行显示的.
会将abc和中文当成变量的。
设置在里面添加’’ 即 value="‘abc’"
没有作用域:<s:set var="name" value="'两个蝴蝶飞'"></s:set> <s:property value="#name"/> <br/>
set时添加作用域:scope
设置作用域:<s:set var="name" value="'两个蝴蝶飞'" scope="session"/> <s:property value="#session.name"/> <br/> <s:property value="#attr.name"/> <br/>
除了可以用它们的相同的作用域取出数据之外,
还可以用 #attr取出全部作用域的值,按照page,request,session,application进行依次获取
三.三 调试标签 debug
<s:debug></s:debug>
可以分别显示 Value Stack 和 Stack Context 里面的数据,便于调试。
三.四 param 传参标签
<s:param name="" value="" />
传递参数,可用在<s:bean> 标签或者<s:url> 标签里面,也可以放置在<s:a >标签里面
注意,如果是普通数字的话,为value=“2” ,如果是字符串的中,应该是 value=" ‘字符串值’ " (里面有一个’’)
三.五 Bean实体类标签
<s:bean name="com.yjl.pojo.User" var="user"> <!-- 用s:param传递参数 --> <s:param name="name" value="'两个蝴蝶飞'"></s:param> <s:param name="age" value="24"></s:param> </s:bean> <!-- 输出数据 --> <s:property value="#user.name"/><br/> <s:property value="#user.age"/><br/>
name为全限定名称,可以方便地将属性赋值到对象中。
三.六 url 网址标签和a标签
url中得到的只是一个链接,并不能单独 的使用,需要将其与<s:a> 标签共同组合使用。
<s:url action="Single_getData" namespace="/" var="a"> <s:param name="name" value="'HelloStruts2'"></s:param> </s:url> 显示出url的值:<s:property value="#a"/> <br/> 要引用s:url时,用%强制转换: <s:a href="%{#a}">跳转</s:a>
<s:a> 标签也可以直接使用action进行跳转,也可以带参数。不用href属性,用action属性。
<s:a action="Single_getData" namespace="/" var="a"> <s:param name="name" value="'HelloStruts2'"></s:param> 跳转 </s:a>
其中<s:a>标签也有一个target属性,与html中target属性意义一样,有target="_blank", target="_self"等。
三.七 include包含标签
<s:include value="head.jsp"></s:include>
与jsp中的静态包含一样。 注意value的值,文件的路径是否正确。 ctrl+鼠标点击时,可以正确跳转到相关的路径。
三.八 date标签
<s:date> 可以对日期进行相应的处理,使其按照规定的格式进行显示,前堤是一个正确的日期或者时间格式,不需要开发者在后端进行单独的日期处理了。
<% request.setAttribute("currentDate",new java.util.Date()); %> <s:date name="#request.currentDate" format="yyyy年MM月dd日 HH mm:ss"/>
name为要显示的那个日期的值,format为显示的格式, y,M,d,H,m,s,S,与util.Date中的format的表达方式一样。
这就是Struts2的控制标签和数据标签的基本用法.
谢谢您的观看!!!