struts2的页面标签(form表单)、动态方法调用通配符(struts.xml)

重点:form表单,各种标签的属性。即如何从域中获取数据作为多选项标签的选项?

Demo组件架构如下:
图片说明

演示效果如下:

  1. index.jsp 放一个超链接

    <a href="emp-input.action">Emp Input Page</a>
  2. 经过struts.xml配置文件
    ```

    <package extends="struts&#45;default" name="default" namespace="&#47;">

    <action name="emp-*"

       class="com.atguigu.struts2.action.Employee"
       method="{1}">
       <result name="{1}">/emp-{1}.jsp</result>    
    </package>
  3. 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>

图片说明