Struts2的标签库(五)
——表单标签
几个特殊的表单标签的使用:
1.checkboxlist标签
该标签用于创建多个复选框,用于同时生成多个<input type="checkbox".../>的HTML标签。它根据list属性指定的集合来生成多个复选框。其标签有如下几个属性:
list属性:指定要产生复选框的集合;
listKey属性:该属性指定集合元素中的某个属性作为复选框的value。当集合为Map时,可以使用Key或者value来指定Map对象中的key或者value作为复选框的value;
listValue属性:该属性指定集合元素中的某个属性作为复选框的标签。如果是Map集合,可以使用key或者value值指定Map对象的key或者value作为复选框的标签;
(1)list属性指定的集合是一个简单的List集合时:
<%@ 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>checkboxlist - 1</title> </head> <body> <s:form action="myindex"> <!-- 使用简单的集合生成多个复选框 --> <s:checkboxlist name="sport" label="请选择喜欢的运动" labelposition="top" list="{'篮球','足球','羽毛球','乒乓球','游泳','跑步'}" > </s:checkboxlist> <s:submit value="提交"/> </s:form> </body> </html>
(2)指定list属性是一个简单的Map集合时:
说明一下listKey和listValue的作用:
listKey属性:复选框的值;
listValue属性:复选框的标签。
<%@ 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>checkboxlist - 2</title> </head> <body> <s:form action="mapTest"> <s:checkboxlist name="names" list="#{1:'张三',2:'李四',3:'王五' }" listKey="value" listValue="key" > </s:checkboxlist> <!-- 使用一个简单的Map集合作为checkboxlist的list属性 --> <s:submit value="提交"/> </s:form> </body> </html>
(3)使用Java集合生成复选框
1)JavaBean类
public class Student { //属性 private String name; private int age; //构造方法 public Student(){ } public Student(String name,int age){ this.name = name; this.age = age; } //setter、getter方法 public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public void setAge(int age){ this.age = age; } public int getAge(){ return this.age; } }
2)Service类
import myJavaBean.Student; public class StudentService { public Student[] getStudents(){ return new Student[]{ new Student("张三",18), new Student("李四",20), new Student("王五",24) }; } }
3)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>checkboxlist - 3</title> </head> <body> <s:form action="mapTest"> <!-- 使用Java集合创建复选框 --> <!-- 创建一个JavaBean对象 --> <s:bean name="myService.StudentService" var="stu"/> <s:checkboxlist name="students" list="#stu.students" listValue="name" listKey="age" > </s:checkboxlist> <s:submit value="提交"/> </s:form> </body> </html>
2.radio标签
使用方法与checkboxlist标签的用法相同,此标签生成的是单选框。使用示例:
<%@ 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>radio test</title> </head> <body> <s:form> <!-- 使用简单的List集合生成单选框 --> <s:radio name="a" list="{'张三','李四','王五'}" > <!-- 使用Map集合生成单选框 --> <s:radio name="b" list="#{1:'张三',2:'李四',3:'王五' }" listValue="key" listKey="value" > </s:radio> <!-- 使用Java集合生成单选框 --> <s:bean name="myService.StudentService" var="sts"/> <s:radio name="c" list="#sts.students" listValue="name" listKey="age" > </s:radio> </s:radio> </s:form> </body> </html>
3.select标签
select标签用于生成一个下拉列表框:
<%@ 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> <!-- 使用简单的List集合生成下拉列表 --> <s:select name="a" list="{'英语','数学','语文','自然'}" > </s:select> <!-- 使用Map集合生成下拉列表框 --> <s:select name="b" list="#{'英语':'张三','数学':'李四','语文':'王五','自然':'嘿嘿'}" listValue="key" listKey="value" > <!-- 使用Java集合生成下拉列表框 --> <s:bean name="myService.StudentService" var="st"/> <s:select name="c" list="#st.students" listValue="name" listKey="age" > </s:select> </s:select> </s:form> </body> </html>
4.optgroup标签
此标签用于长生一个下拉列表框的选项组,该标签必须在select标签中使用,可以在一个select标签中使用多个optgroup标签。示例如下:
<%@ 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> <!-- 在select标签中使用optgroup标签 --> <s:select name="a" list="{1,2,3,4}" size="5" > <s:optgroup label="label——1" list="#{1:'张三',2:'李四',3:'王五'}" listValue="key" listKey="value" /> <s:bean name="myService.StudentService" var="st"/> <s:optgroup label="label——2" list="#st.students" listValue="name" listKey="age" /> </s:select> </s:form> </body> </html>
5.updownselect标签
生成可以上下移动选项的列表框,该标签有如下几个特别的属性:
allowMoveUp属性:是否显示“上移”按钮,默认true。
allowMoveDown属性:是否显示“下移”按钮,默认为true。
allowSelectAll属性:是否显示“全选”按钮,默认我true。
moveUpLabel属性:设置“上移”按钮的文本,默认为“^”。
moveDownLabel属性:设置“下移”按钮的文本,默认为“v”。
selectAllLabel属性:设置“全选”按钮的文本,默认为“*”。
示例:
<%@ 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>updownselect</title> </head> <body> <s:form> <s:updownselect name="a" list="{'a','b','c','d','e'}" /> </s:form> </body> </html>
6.doubleselect标签
该标签为生成级联列表框的标签。该标签有如下几个属性:
list属性:
指定第一个下拉列表框中的集合。
listKey属性:
指定集合中作为下拉列表框的value值。
listValue属性:
指定集合中作为下拉集列表框的标签。
doubleList属性:
指定第二个下拉列表框的集合。
doubleListKey属性:
指定第二个集合中作为下拉列表框的value值。
doubleListValue属性:
指定第二个集合中作为下拉列表框的标签。
doubleName属性:
指定第二个下拉列表框的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>doubleselect</title> </head> <body> <s:set name="a" value="#{'学生':{'学生1','学生2','学生3','学生4'},'教师':{'教师1','教师2','教师3'} }" /> <s:form> <s:doubleselect name="b" doubleList="#a[top]" list="#a.keySet()" doubleName="name"> </s:doubleselect> </s:form> </body> </html>