我有一个带有表单的jsp页面,想要将数据捕获到List中,以便我可以显示稍后添加的所有对象。
我的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框架的新手,这让我很困惑。值是否设置错误?有关如何列出所有对象的任何提示吗?
答案 0 :(得分:0)
<s:textfield name="model[%{#rowStatus.index}].firstName"
字段名称错误,你有getter&amp; private 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>
答案 1 :(得分:0)
List<Student>
; prepare()
为页面准备数据(例如静态<select/>
值),而不是设置从页面接收的业务数据; prepare();
中操作页面中的属性时,您必须使用paramsPrepareParamsStack来访问它们; 最后,但这是基于意见的,避免使用ModelDriven ...该功能对恕我直言并不是很有用,并且可以快速搞砸事情,特别是如果你不知道发生了什么;