使用表单标签的优点
1.表单回显
2.对页面进行布局和排版
<%@ 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>Insert title here</title>
</head>
<body>
<%
request.setAttribute("theme", "xhtml");
%>
<!-- 回显的时候, 会从栈顶对象寻找,再显示 -->
<s:form action="emp-save">
<s:textfield name="name" label="Name"></s:textfield>
<s:password name="password" label="Password"></s:password>
<s:radio name="gender" list="#{'1':'Male','0':'Female' }" label="Gender"></s:radio>
<s:select list="#request.depts" listKey="deptId"
listValue="deptName" name="dept" label="Department" headerValue="请选择"></s:select>
<s:checkboxlist list="#request.roles" listKey="roleId"
listValue="roleName" name="roles" label="Role"></s:checkboxlist>
<s:textarea name="desc" label="Desc"></s:textarea>
<!-- 这个checkbox是单选框,而checkboxlist是多选
而与原生单选框相比,无论是否勾选,都会传给后台。但是html原生单选框如果不选
就不会提到后台
-->
<s:checkbox name="conform" label="单选"></s:checkbox>
<s:submit></s:submit>
</s:form>
</body>
</html>
action类
public class Employee implements RequestAware{
private Map<String, Object> requestMap = null;
private Dao dao = new Dao();
private String name;
private String password;
private String gender;
private String dept;
private List<String> roles;
private String desc;
private boolean conform;
public boolean isConform() {
return conform;
}
public void setConform(boolean conform) {
this.conform = conform;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
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 getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public List<String> getRoles() {
return roles;
}
public void setRoles(List<String> roles) {
this.roles = roles;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String save(){
System.out.println("save: " + this);
return "save";
}
//继承RequestAware后,注入requestMap,再通过DAO将多选框值放入,带到页面显示多选内容
public String input(){
requestMap.put("depts", dao.getDepartments());
requestMap.put("roles", dao.getRoles());
return "input";
}
@Override
public void setRequest(Map<String, Object> request) {
this.requestMap = request;
}
@Override
public String toString() {
return "Employee [name=" + name + ", password=" + password + ", gender=" + gender + ", dept=" + dept
+ ", roles=" + roles + ", desc=" + desc + ", conform=" + conform + "]";
}
}
<action name="emp-*" class="com.atguigu.struts.valuestack.app.Employee" method="{1}">
<result name="{1}">/emp-{1}.jsp</result>
</action>