struts2+hibernate3+spring2读书笔记7(Struts 2 标签库)
第8章 Struts 2 标签库
一.控制标签
实例需求:Strut2的控制标签属于UI标签,它主要用于完成流程控制,例如循环和分支等操作。本实例对Struts2的几个控制标签:iterator、if/elseif/else、append、generator、sort、merge和subset的使用进行了实例的操作。(注:建立的开发环境与前面几章类似,在这里就不举例了。)
1.Iterator标签
各属性介绍:
(1)id:可选项,集合中引用的元素的id,对于UI和表单标签可以用来做html的id属性。
(2)value:可选项,需要进行迭代的迭代源,或者对象本身将会被放置到一个新的列表中。
(3)status:可选项,指定迭代时的IteratorStatus实例。利用它可获得当前对象的索引。其中属性:count是指当前迭代的元素、index指当前迭代元素的索引、even指当前迭代元素的索引是否为偶数(第一条为1)、odd指当前迭代元素的索引是否为奇数(第一条为1)、first指当前迭代元素是否为第一个元素、last指当前迭代元素是否为最后一个元素
在iterator的value属性中给定了水果集合,指定id后,迭代输出fruitName(水果名),完整代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Iterator 标签实例</title></head><body><table border="1"><s:iterator value="{'banana','apple','orange','cherry'}" id="fruitName"><tr><td><s:property value="fruitName"/></td></tr></s:iterator></table></body></html><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Iterator 标签实例</title></head><body><table border="1"> <tr> <td>索引</td> <td>水果名称</td> <td>是否为第一个</td> <td>是否为最后一个</td> <td>是否为奇数</td> <td>是否为偶数</td> </tr><s:iterator value="{'banana','apple','orange','cherry'}" id="fruitName" status="st"><tr> <td> <s:property value="#st.index"/> </td><td> <s:property value="fruitName"/> </td><td> <s:property value="#st.first"/> </td><td> <s:property value="#st.last"/> </td><td> <s:property value="#st.odd"/> </td><td> <s:property value="#st.even"/> </td></tr></s:iterator></table></body></html><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Iterator 标签实例</title></head><body><table border="1"> <tr> <td>水果Id</td> <td>水果名称</td> </tr><s:iterator value="#{'1':'banana','2':'apple','3':'orange','4':'cherry'}" id="fruitName" status="st"><tr> <td> <s:property value="key"/> </td><td> <s:property value="value"/> </td></tr></s:iterator></table></body></html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="true" %><%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>if/elseif/else标签实例</title></head><body><s:set name="score" value="87" /><s:if test='${score<60}'>您的分数小于60,不及格</s:if><s:elseif test='${score<85}'>您的分数在60和85之间,良好</s:elseif><s:else>您的分数在85分以上,优秀</s:else></body></html>备注:struts2在2.0.11以后的版本都不支持el表达式,但在struts2标签之外使用el表达式是被允许的。 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>append标签实例</title></head><body><s:append id="totalFruitList"><s:param value="{'banana','apple','orange','cherry'}" id="fruitList1"/><s:param value="{'香蕉','苹果','桔子','樱桃'}" id="fruitList2"/></s:append><table border="1"><tr><td>水果名称</td></tr> <s:iterator value="#totalFruitList" id="fruitName"><tr><td><s:property value="fruitName"/></td></tr></s:iterator></table></body></html><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>generator标签实例</title></head><body><s:generator val="'banana,apple,orange,cherry'" separator="," id="fruits" count="3"><table border="1"><tr><td>水果名称</td></tr><s:iterator><tr><td><s:property /></td></tr></s:iterator></table></s:generator></body></html>
package amigo.struts.tag;import java.util.Comparator;/** *自定义的数字比较器 */public class NumComparator implements Comparator {public int compare(Object element1, Object element2) {// TODO Auto-generated method stubint resultCode=0;int num1=Integer.parseInt(element1.toString());int num2=Integer.parseInt(element2.toString());if(num1>num2){resultCode=1;}else if(num1<num2){resultCode=-1;}return resultCode;}}接下来在SortTag.jsp中使用sort标签,将comparator设置为该NumComparator实例,该jsp页面的完整代码如下所示:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>sort标签实例</title></head><body> <!-- 使用bean标签定义一个NumComparator实例 --><s:bean id="numComparator" name="amigo.struts.tag.NumComparator"></s:bean><table border="1"><tr><td>数字排序</td></tr><s:sort source="{2,3,7,4,1,9,5,6,8}" comparator="numComparator"><s:iterator><tr><td><s:property /></td></tr></s:iterator></s:sort></table></body></html><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>merge标签实例</title></head><body><s:merge id="totaoFruitList"><s:param value="{'banana','apple','orange','cherry'}" id="fruitList1"></s:param><s:param value="{'香蕉','苹果','桔子','樱桃'}" id="fruitList2"></s:param></s:merge><table border="1"><tr><td>水果名称</td></tr><s:iterator value="#totaoFruitList" id="fruitName"><tr><td><s:property value="#fruitName"/></td></tr></s:iterator></table></body></html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>subset标签</title></head><body><s:subset source="{'香蕉','苹果','桔子','樱桃','芒果','葡萄'}" start="2" count="2"><table border="1"><tr><td>水果名称</td></tr><s:iterator><tr><td><s:property /></td></tr></s:iterator></table></s:subset></body></html> package amigo.struts.tag.dataTags;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** * Action标签的实例,在方法中验证用户名和密码 * */public class ActionTagAction extends ActionSupport {private static final long serialVersionUID=1L;/**用户名*/private String username;/**密码*/private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String execute(){ActionContext ctx = ActionContext.getContext();if(this.getUsername()!=null&&"amigo".equals(this.getUsername())&&this.getPassword()!=null&&"amigo".equals(this.getPassword())){return this.SUCCESS;}else{return this.ERROR;}}}<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>登录成功页面</title></head><body>登录成功</body></html>(3)编写登录失败页error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>登录失败页面</title></head><body>登录失败</body></html>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><include file="struts-default.xml"/><package name="amigo" extends="struts-default"><action name="Login" name="code"> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>action标签实例</title></head><body>展示action 标签的使用<br/>(1)executeResult、ignoreContextParams都为false<br/><s:action name="Login"></s:action><br/>(2)executeResult为true、ignoreContextParams为false<br/><s:action name="Login" executeResult="true"></s:action><br/>(3)executeResult、ignoreContextParams都为true<br/><s:action name="Login" executeResult="true" ignoreContextParams="true"></s:action></body></html>
package amigo.struts.tag.dataTags;/** * 用户的JavaBean类 * */public class User { /** 用户名*/private String username;/** 密码*/private String password;/**性别*/private String gender;/**联系电话*/private String tel;/**Email*/private String email;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>bean标签实例</title></head><body><!-- bean标签指定id属性,用于后续用户信息的输出 注意:value里还需要单引号 --><s:bean name="amigo.struts.tag.dataTags.User" id="user"><s:param name="username" value="'amigo'" ></s:param><s:param name="password" value="'1234'" ></s:param><s:param name="gender" value="'女'" ></s:param><s:param name="tel" value="'13666666666'" ></s:param><s:param name="email" value="'hhr1231@163.com'"></s:param></s:bean><!-- 输出用户信息 --><table border="1" width="80%"><tr align="center"><td colspan="4">用户信息</td></tr><tr align="center"><td>用户名:</td><td><s:property value="#user.username"/></td><td>密码:</td><td><s:property value="#user.password"/></td></tr><tr align="center"><td>性别:</td><td><s:property value="#user.gender"/></td><td>联系电话:</td><td><s:property value="#user.tel"/></td></tr><tr align="center"><td>Email:</td><td colspan="3"><s:property value="#user.email"/></td></tr></table></body></html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>param标签实例</title></head><body><!-- 嵌套在bean标签中使用 --><s:bean name="amigo.struts.tag.dataTags.User" id="user"><s:param name="username" value="'amigo'"></s:param></s:bean> 嵌套在include标签中使用 <br/><s:include value="success.jsp"><s:param name="username" value="'amigo'"></s:param></s:include><br/> 嵌套在componen标签中使用<br/> <ui:component> <ui:param name="username">amigo</ui:param><br/> <ui:param name="username">amigo2</ui:param><br/> <ui:param name="username">amigo3</ui:param> </ui:component> </body></html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>set标签实例</title></head><body> <!-- bean标签指定id属性,用于后续用户信息的输出 --> <s:bean name="amigo.struts.tag.dataTags.User" id="user"> <s:param name="username" value="'amigo'"></s:param> <s:param name="password" value="'1234'"></s:param> </s:bean> 未指定scope</br> <s:set name="newUsr" value="#user" /> <table border="1" width="80%"> <tr align="center"> <td>用户名:</td> <td><s:property value="#newUsr.username"/></td> <td>密码:</td> <td><s:property value="#newUsr.password"/></td> </tr> </table> 指定scope为request<br/> <s:set name="newUsr" value="#user" scope="request"/> <table border="1" width="80%"> <tr align="center"> <td>用户名:</td> <td><s:property value="#attr.newUsr.username"/></td> <td>密码:</td> <td><s:property value="#attr.newUsr.password"/></td> </tr> </table> 指定scope为request的另一和属性获取方式<br/> <table border="1" width="80%"> <tr align="center"> <td>用户名:</td> <td>${requestScope.newUsr.username}</td> <td>密码:</td> <td>${requestScope.newUsr.password}</td> </tr> </table> </body></html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>property标签实例</title></head><body><s:bean name="amigo.struts.tag.dataTags.User" id="user"><s:param name="username">amigo</s:param><s:property value="%{username}"/><br/></s:bean><s:property value="username" default="默认名称"/><br/>获得Stack Context中的username:<s:property value="#user.username"/><br/>获得ValueStack中的fruitName:<br/><s:iterator value="{'banana','apple','orange','cherry'}" id="fruitName"><s:property value="fruitName"/><br/></s:iterator></body></html><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>url标签实例</title></head><body> 指定action属性,不指定value属性<br/><s:url action="Login"><s:param name="username" value="'amigo'"></s:param><s:param name="password" value="'amigo'"></s:param></s:url><br/>指定action属性和value属性时,优先value属性<br/><s:url action="Login" value="success.jsp"><s:param name="username" value="'amigo'"></s:param><s:param name="password" value="'amigo'"></s:param></s:url><br/>action属性和value属性都不指定时,链接到本页面<br/><s:url><s:param name="username" value="'阿蜜果'"></s:param><s:param name="password" value="'amigo'"></s:param></s:url></body></html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>push标签实例</title></head><body><s:bean name="amigo.struts.tag.dataTags.User" id="user"><s:param name="username" value="'amigo'"></s:param><s:param name="password" value="'1234'"></s:param></s:bean>不使用push 时对属性的访问<br/><table border="1" width="80%"><tr align="center"><td>用户名:</td><td><s:property value="#user.username"/></td><td>密码:</td><td><s:property value="#user.password"/></td></tr></table>使用push 标签简化值的访问<br/><s:push value="#user"><table border="1" width="80%"><tr align="center"><td>用户名:</td><td><s:property value="username"/></td><td>密码:</td><td><s:property value="password"/></td></tr></table></s:push></body></html>
<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>include标签实例</title></head><body><s:include value="includeFile.jsp" id="includeFile"><s:param name="username" value="'阿蜜果'"/><s:param name="password" value="'1234'"/></s:include></body></html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>data标签实例</title></head><body><%java.util.Date now= new java.util.Date(2008-1900,7-1,13);pageContext.setAttribute("now",now); %> 当前日期,格式化为yyyy-MM-dd:<s:date name="#attr.now" format="yyyy-MM-dd"/><br/> 当前日期,未指定format属性:<s:date name="#attr.now" /><br/> 当前日期,指定了nice为true,未指定format:<s:date name="#attr.now" format="yyyy-MM-dd" nice="true"/><br/></body></html><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>debug标签实例</title></head><body><s:debug></s:debug></body></html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="true"%><%@ taglib prefix="s" uri="/struts-tags" %> <% request.setAttribute("username","阿密果");%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>表单标签实例</title></head><body><s:form action="Login.action" method="post"><s:textfield name="username" label="没带value值的文本框"></s:textfield><s:textfield name="username" value="amigo" label="带value值的文本框"></s:textfield><s:textfield name="username" value="${username}" label="value值通过el表达式获得"></s:textfield></s:form></body></html>备注:struts2在2.0.11以后的版本都不支持el表达式,但在struts2标签之外使用el表达式是被允许的。(1)select 标签的实例页面selectTag.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>select 标签实例</title></head><body><s:form action="testAction" method="post"><!-- 选项的值与显示的值一样的单选框 --><s:select name="bookType" label="请选择图书类型" labelposition="top"list="{'计算机','社会科学','财经','文学','数学','升学考试'}" /><!-- 选项的值与显示的值不一样的单选框 --><s:select name="bookType" label="请选择图书类型" labelposition="top"list="#{'1':'计算机','2':'社会科学','3':'财经','4':'文学','5':'数学','6':'升学考试'}" /><!-- 可多选框 --><s:select name="bookType" label="请选择图书类型" labelposition="top" multiple="true"list="{'计算机','社会科学','财经','文学','数学','升学考试'}" /><!-- 使用集合里放多个javaBean实例来生成下拉列表框 --><s:bean name="amigo.struts.tag.uiTags.BookTypeService" id="typeService"/><s:select name="bookType" label="请选择图书类型" labelposition="top" list="#typeService.BookTypes" listKey="typeId"listValue="typeName"/> </s:form></body></html> package amigo.struts.tag.uiTags;public class BookType {private String typeId;private String typeName;public String getTypeId() {return typeId;}public void setTypeId(String typeId) {this.typeId = typeId;}public String getTypeName() {return typeName;}public void setTypeName(String typeName) {this.typeName = typeName;}public BookType(String typeId,String typeName){ this.typeId=typeId; this.typeName=typeName;}}package amigo.struts.tag.uiTags;public class BookTypeService {public BookType[] getBookTypes(){return new BookType[] {new BookType("1","计算机"),new BookType("2","社会科学"),new BookType("3","财经")};}}<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><html><head><title>radio标签实例</title></head><body><s:form action="testAction" method="post"><!-- 选项的值与显示值一样的单选框: --><s:radio name="bookType" label="请选择图书类型" labelposition="top"list="{'计算机', '社会科学', '财经', '文学', '数学', '升学考试'}" /><!-- 选项的值与显示值不一样的单选框: --><s:radio name="bookType" label="请选择图书类型" labelposition="top"list="#{'1':'计算机', '2':'社会科学', '3':'财经', '4':'文学', '5':'数学', '6': '升学考试'}" /><!-- 使用集合里放多个JavaBean实例来生成单选框: --><s:bean name="amigo.struts.tag.uiTags.BookTypeService" id="typeService"/><s:radio name="bookType" label="请选择图书类型" labelposition="top"list="#typeService.bookTypes" listKey="typeId"listValue="typeName" /></s:form></body></html>4.使用checkboxlist标签(该标签可以一次创建多个复选框列表,它的属性与单选框类似)<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><html><head><title>checkboxlist标签实例</title></head><body><s:form action="testAction" method="post"><!-- 选项的值与显示值一样的复选框: --><s:checkboxlist name="bookType" label="请选择图书类型" labelposition="top"list="{'计算机', '社会科学', '财经', '文学', '数学', '升学考试'}" /><!-- 选项的值与显示值不一样的复选框: --><s:checkboxlist name="bookType" label="请选择图书类型" labelposition="top"list="#{'1':'计算机', '2':'社会科学', '3':'财经', '4':'文学', '5':'数学', '6': '升学考试'}" /><!-- 使用集合里放多个JavaBean实例来生成复选框: --><s:bean name="amigo.struts.tag.uiTags.BookTypeService" id="typeService"/><s:checkboxlist name="bookType" label="请选择图书类型" labelposition="top"list="#typeService.bookTypes" listKey="typeId"listValue="typeName" /></s:form></body></html>5.使用combobox标签(该标签用于生成一个单行文本框和下拉列表框的组合,并且两个表单元素对应一个请求参数,但是只有单行文本框中才包含请求参数,而下拉列表框只用于辅助输入,并没有name属性,当然也不会产生请求参数。)<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>combobox标签实例</title></head><body><s:form action="testAction" method="post"><s:combobox name="bookType"label="请选择图书类型"labelposition="top"list="{'计算机','社会科学','财经','文学','数学','升学考试'}"/></s:form></body></html><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>doubleselect标签实例</title></head><body><s:form action="testAction" name="form0" method="post"><s:set name="bookTypes" value="#{'计算机':{'Java','C#','struts2'},'文学':{'言情小说','恐怖','散文','历史小学'},'升学考试':{'考研','考博','高考'}}"></s:set><s:doubleselect label="请选择类别"name="bookType"list="#bookTypes.keySet()" doubleName="subBookType" doubleList="#bookTypes[top]"></s:doubleselect></s:form></body></html><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>datetimepicker标签实例</title><s:head/></head><body><s:form action="test" theme="simple" method="POST"> 日期选择,使用默认的displayFormat(默认为yyyy-MM-dd),指定toggleType(默认为plain)和value属性(值为today,即今天):<br><s:datetimepicker name="birthDate" label="出生日期" toggleType="fade" value="today"/><hr>日期选择,指定了format属性<br><s:datetimepicker name="birthDate" label="出生日期" displayFormat="yyyy/MM/dd"/><hr>日期选择,指定了weekStartsOn属性(不指定时默认为0,即从周日开始)<br><s:datetimepicker name="birthDate" label="出生日期" weekStartsOn="1"/><hr>时间选择(设置type为time)<br><s:datetimepicker name="start" label="选择出发时间" type="time" /><hr></s:form></body></html>备注:在使用datetimepicker时需要<s:head/>加上,若不加上的话,打开该页面时会报javascript错误
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>optiontransferselect标签实例</title><s:head/></head><body><s:form><!-- 使用简单集合对象来生成可移动的下拉列表框 --><s:optiontransferselect label="请选择你喜欢的图书类型" name="bookType" leftTitle="--所有图书--" list="{'计算机','社会科学','财经','文学','数学'}" multiple="true" addToLeftLabel="左移" selectAllLabel="全部选择" addToRightLabel="右移" rightTitle="--喜欢图书--" doubleList="{'散文','历史'}" doubleName="loveBookType" doubleMultiple="true" /></s:form></body></html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>optgroup实例</title></head><body><s:form action="testAction" method="post"><s:select label="选择您喜欢的图书类型"name="bookType"list="#{'1':'计算机','2':'社会科学','3':'财经','4':'数学'}"listKey="key"listValue="value"><s:optgroup label="小说"list="#{'5':'言情小说','6':'武打小说','7':'恐怖小说'}"listKey="key"listValue="value" /> <s:optgroup label="升学考试" list="#{'8':'考研','9':'考博','10':'高考'}" listKey="key" listValue="value"/></s:select></s:form></body></html><%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><html><head><title>updownselect标签实例</title><s:head/></head><body><s:form><!-- 使用简单集合来生成可上下移动选项的下拉选择框 --><s:updownselect name="bookType1" label="请选择图书类型" labelposition="top"list="{'计算机', '社会科学', '财经', '文学', '数学', '升学考试'}" /><!-- 使用简单Map对象来生成可上下移动选项的下拉选择框,且使用emptyOption="true"增加一个空选项--><s:updownselect name="bookType2" label="请选择图书类型"labelposition="top"moveUpLabel="上移"moveDownLabel="下移"list="#{'1':'计算机', '2':'社会科学', '3':'财经', '4':'文学', '5':'数学', '6': '升学考试'}"listKey="key"listValue="value"emptyOption="true" /><!-- 使用集合里放多个JavaBean实例来生成下拉列表框: --><s:bean name="amigo.struts.tag.uiTags.BookTypeService" id="typeService"/><s:updownselect name="bookType3" label="请选择图书类型"labelposition="top"selectAllLabel="全选"multiple="true"list="#typeService.bookTypes" listKey="typeId"listValue="typeName" /></s:form></body></html>