struts2里面iterator中的属性怎么才能提交到action里面呢?例如
Class Itemprivate String req;
private String no;
private String desc;
//get set方法省略然后表示页面的ActionList itemList;
//get set方法省略public String execute() {
    itemList = new ArrayList();
    itemList.add(new Item());
    itemList.add(new Item());
    return "success";
}然后JSP里面<s:iterator value="itemList" id="itemList" status="status">
    <s:checkbox name="req" fieldValue="req"></s:checkbox>
    <s:textfield name="no"/>
    <s:textfield name="desc"/>
</s:iterator>
请问下,当我在页面上点击按钮,想把页面输入的东西提交到action里的时候,应该怎么弄呢?
可不可以在接受信息的action里面定义一个List itemList;然后提交之后就自动拿到一个充满Item对象的list,其中每个Item对象的属性就是页面上输入的内容呢?总应该不至于让我在接收输入信息的action里面分别定义req,no,desc三个list来接受信息吧?请大家指点

解决方案 »

  1.   

    struts2.0不是有动态注入的机制,用一个list就可以接受了。
      

  2.   


    我觉得也应该定义一个list就可以了吧,
    但是为什么我拿到的list是null呢?而且问一下不需要制定list中对象的类型吗?
      

  3.   

    没人看吗?大家都没有这样的需求吗?我觉得很常用的功能呀难道大家全都是把每个要修改的属性都再单独拿出来定义一个list?
      

  4.   

    set get 了么
    而且 你的list  是一个对象 加上泛型呢
      

  5.   


    get set是肯定有的,不然值的显示都成问题,对吧。(我只做了List的get set)在list定义的时候加上泛型我试过了,但是没好用。
    我在想,没有Item对象的声明和get set方法,struts2能那么智能,能够知道需要封装一个什么类型吗?但是要写又不知道应该写在哪儿struts1有点忘记了,但是我记得是在遍历的时候,在JSP上指定了这个list中对象类型的,所以认得到,struts2怎么办呢?
      

  6.   

    写了点,也许对你有帮助
    1)环境:jdk1.5,tomcat5.5
    2)导入sturts2jar包:commons- fileupload-1.2.1.jar、commons-io-1.3.2.jar、commons-logging-1.0.4.jar、 freeer-2.3.15.jar、ognl-2.7.3.jar、struts2-core-2.1.8.jar、xwork-core- 2.1.6.jar。
    3)web.xml内容:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     
      <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
      </filter-mapping>
       
      <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    4)struts.xml文件内容:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <constant name="struts.ui.theme" value="simple" />
    <package name="anhuixiao" namespace="/anhuixiao" extends="struts-default">
    <action name="list" class="cn.anhuixiao.action.PersonListAction">
    <result name="list">/WEB-INF/page/personlist.jsp</result>
    </action>
    <action name="show_*" class="cn.anhuixiao.action.PersonListAction" method="{1}">
    <result name="show">/WEB-INF/page/personlistShow.jsp</result>
      </action>
    </package>
    </struts>
    5)PersonListAction-conversion.properties内容
    Element_bookList=cn.anhuixiao.bean.Book此文件放PersonListAction.java同一目录下
    6)PersonListAction.java 内容
    package cn.anhuixiao.action;import java.util.ArrayList;
    import java.util.List;import cn.anhuixiao.bean.Book;public class PersonListAction { private List<Book> bookList; public String execute() {
    bookList = new ArrayList<Book>();
    bookList.add(new Book(56, "javaweb", 90));
    bookList.add(new Book(80, "ejb", 78));
    bookList.add(new Book(23, "spring", 50));
    return "list";
    } public String show() { for (Book book : bookList) {
    System.out.println(book.getName());
    } return "show";
    } public List<Book> getBookList() {
    return bookList;
    } public void setBookList(List<Book> bookList) {
    this.bookList = bookList;
    }
    }
    7)Book.java内容:
    package cn.anhuixiao.bean;public class Book {
    private Integer bookid;
    private String name;
    private Integer price;

    public Integer getBookid() {
    return bookid;
    }
    public void setBookid(Integer bookid) {
    this.bookid = bookid;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public Integer getPrice() {
    return price;
    }
    public void setPrice(Integer price) {
    this.price = price;
    }

    public Book(Integer bookid, String name, Integer price) {
    this.bookid = bookid;
    this.name = name;
    this.price = price;
    }

    public Book(String name) {
    this.name = name;
    }

    public Book(){

    }
    }8)personlist.jsp 内容:
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'personlist.jsp' starting page</title>
        
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   </head>
      
      <body>
    <s:form action="show_show" namespace="/anhuixiao">
    <s:iterator value="bookList" status="status" >
    <s:textfield label="Name" name="bookList[%{#status.index}].name" value="%{bookList[#status.index].name}"/><br/>
    </s:iterator>
    <s:submit value="submit" />
    </s:form>
      </body>
    </html>
    9)personlistShow.jsp内容
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>My JSP 'personlist.jsp' starting page</title>
        
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   </head>
      
      <body>
       改变后的结果<br/>
    <s:iterator value="bookList" status="status" >
    <s:property value="name"/><br/>
    </s:iterator>
      </body>
    </html>
      

  7.   

    对了,浏览器中你输入http://localhost:9999/ognl/anhuixiao/list.action既可以看到效果。9999是 tomcat改写后的端口号
      

  8.   

    记得bean里面一定要有默认构造函数哦!