struts2的页面标签(form表单)、动态方法调用通配符(struts.xml)
重点:form表单,各种标签的属性。即如何从域中获取数据作为多选项标签的选项?
Demo组件架构如下:
演示效果如下:
index.jsp 放一个超链接
<a href="emp-input.action">Emp Input Page</a>
经过struts.xml配置文件
<package extends="struts-default" name="default" namespace="/">
```<action name="emp-*"
class="com.atguigu.struts2.action.Employee" method="{1}"> <result name="{1}">/emp-{1}.jsp</result>
</package>action类,执行的是input方法
将封装好的dept,role放到requestMap中,并返回emp-input.jsp页面进行表单的填写
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;</string>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() {</string>
return roles;
}
public void setRoles(List<string> roles) {</string>
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";
}
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 + "]";
}
}
<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"></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> <s:submit></s:submit> </s:form>
4.点击表单的submit,再经过struts.xml文件调用的是action类的save方法,跳转到emp-save.jsp进行对map数据的获取
Name: ${name } <br><br> Password: ${password } <br><br> Gender: ${gender } <br><br> Dept: ${dept } <br><br> Roles: ${roles } <br><br> Desc: ${desc } <br><br>