0

我有一个带有表单的 jsp 页面,并希望将数据捕获到一个列表中,以便我可以显示以后添加的所有对象。

我的jsp页面上的迭代器

 <s:iterator value="model" status="rowStatus">
    <tr>
        <td><s:textfield name="model[%{#rowStatus.index}].firstName" value="%{#firstName" /></td>
        <td><s:textfield name="model[%{#rowStatus.index}].lastName" value="%{model[#rowStatus.index].lastName}" /></td>
    </tr>
</s:iterator>

我的动作课

    public class StudentAction extends ActionSupport implements ModelDriven, Preparable {

    private static List<Student> students;
    private Student student;

    public List<Student> getModel() {
        return students;
    }

    @Override
    public void prepare() {
        students = new ArrayList<>();
        student = new Student();
        student.setFirstName(firstName);
        student.setLastName(lastName);
        students.add(student);
    }

    public ArrayList<Payment> getBankList() {
        return payments;
    }

    public List<Student> getStudents() {
        return students;
    }
}

我是 Struts2 框架的新手,这让我非常困惑。值设置不正确??关于如何列出所有对象的任何提示?

4

2 回答 2

0
  1. 您缺少 SETTER 的List<Student>;
  2. 用于prepare()为页面准备数据(例如静态<select/>值),而不是设置从页面接收的业务数据;
  3. 从 中的页面操作属性时prepare();,必须使用paramsPrepareParamsStack来访问它们;

最后,但这是基于意见的,避免使用 ModelDriven ......恕我直言,该功能并不是真正有用,并且可以很快搞砸事情,特别是如果您不知道发生了什么;

于 2013-10-28T14:37:33.697 回答
0
<s:textfield name="model[%{#rowStatus.index}].firstName"

字段名称错误,您有 getter 和 setterprivate static List<Student> students;

因此,该字段的名称应students为:

<s:iterator value="model" status="rowStatus">
    <tr>
        <td><s:textfield name="students[%{#rowStatus.index}].firstName" value="%{firstName}" /></td>
        <td><s:textfield name="students[%{#rowStatus.index}].lastName" value="%{lastName}" /></td>
    </tr>
</s:iterator>
于 2013-10-27T18:49:18.887 回答