Struts2提供了一系列用于表单的标签,本文主要对这些标签的用法做个介绍,仍然采用代码+注释的形式进行讲解。
<%@page import="com.jiajia.model.Group"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.jiajia.model.Course"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 添加struts标签所需的标签库 -->
<%@ 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>Insert title here</title>
</head>
<body>
<!-- 为了在网页中看到valueStack,必须加上该条配置 -->
<s:debug></s:debug>
<%
List<Group> groups = new ArrayList<Group>();
groups.add(new Group(1,"basketball"));
groups.add(new Group(2,"baseball"));
groups.add(new Group(3,"chess"));
groups.add(new Group(4,"music"));
request.setAttribute("groups", groups);
String []grades = new String[]{"一年级","二年级","三年级"};
request.setAttribute("grades", grades);
List<Course> courses = new ArrayList<Course>();
courses.add(new Course(1,"Math"));
courses.add(new Course(2,"English"));
courses.add(new Course(3,"Politics"));
courses.add(new Course(4,"History"));
request.setAttribute("courses", courses);
List<Course> sCourses = new ArrayList<Course>();
sCourses.add(new Course(1,"Machine Learning"));
sCourses.add(new Course(2,"Pattern Recognition"));
sCourses.add(new Course(3,"Data Mining"));
sCourses.add(new Course(4,"Statistic"));
request.setAttribute("sCourses", sCourses);
%>
<!--
Struts2表单标签的一个非常大的好处是可以自动实现表单回显功能。
需要注意的是,为了实现回显功能,form对应的Action类中必须有
与form中各个标签的name属性对应的属性,并有相应的getter和setter方法。
-->
<s:form action="userAction">
<!-- 普通输入框,name属性用于访问里面的内容,label属性用于在输入框前面显示文本。 -->
<s:textfield name="name" label="用户名"/>
<!-- 密码输入框 showPassword属性决定表单回显是否将密码一块儿回显-->
<s:password name="password" label="密码" showPassword="true"></s:password>
<!-- 多行文本输入框 -->
<s:textarea name="address" label="address"></s:textarea>
<!--
checkbox 标签将呈现为一个 HTML 复选框元素. 该复选框元素通常用于提交一个布尔值。
无论该复选框是否被勾选,请求参数中都会增加这一个参数,勾选值为true,不勾选值为false
-->
<s:checkbox name="adult" label="成年"></s:checkbox>
<!--
checkboxList标签提供的就是传统HTML中的checkbox功能,可以提供多个选项供用户选择。
list属性时必须填的,主要为checkboxList提供数据,可以接收String, 数组, Enumeration,
Iterator, Map 或 Collection 赋给 list 属性.
下面的例子中,groups中的Group对象的个数即为复选框的个数,Group对象的groupId属性是实际被当做
请求参数的,groupName属性用于显示。
-->
<s:checkboxlist name="groups" list="#request.groups"
listKey="groupId" listValue="groupName"></s:checkboxlist>
<!-- radio 标签将呈现为一组单选按钮, 单选按钮的个数与程序员通过该标签的 list 属性提供的选项的个数相同 -->
<s:radio list="#request.grades" name="grade"/>
<!--
select 标签将呈现一个 select 元素,仍然是靠list属性提供数据,multiple属性指示是否可以多选 .
s:optgroup作为select的子标签可以提供选项组,组里的内容依然是使用list,listKey,listValue来组织。
-->
<s:select list="#request.courses" listKey="courseId"
listValue="courseName" name="courses" multiple="true">
<s:optgroup list="#request.sCourses" listKey="courseId"
listValue="courseName" label="super courses"></s:optgroup>
</s:select>
<s:submit value="提交"></s:submit>
</s:form>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
<br/><br/>
</body>
</html>
完整的示例代码在这里:
http://download.csdn.net/detail/jiajia333666/9103333