JSP中的迭代列表对象,其值来自显示正确的ViewAction类。
下面是jps代码。
<s:iterator value="beanList" status="stat"> <tr> <td> <input type="checkbox" name="subCheckBox" /> </td> <td> <s:textfield name="beanList[%{#stat.index}].rollnumber" value="%{rollnumber}" theme="simple"/> </td> <td> <s:textfield name="beanList[%{#stat.index}].name" value="%{name}" theme="simple"/> </td> <td> <s:textfield name="beanList[%{#stat.index}].location" value="%{location}" theme="simple"/> </td> </tr> </s:iterator>
ViewAction.java和Bean类的代码如下
在动作类列表中,对象名称为 beanList
public class ViewCheckboxAction extends ActionSupport { HttpServletRequest request = ServletActionContext.getRequest(); String viewData = "select * from student order by rollno"; List<Bean> beanList; public List<Bean> getBeanList() { return beanList; } public void setBeanList(ArrayList<Bean> beanList) { this.beanList = beanList; } public String execute() { beanList = new ArrayList<Bean>(); DbConnection db = new DbConnection(); int counter = 0; try { Statement st = db.getConnection().createStatement(); ResultSet res = st.executeQuery(viewData); while(res.next()) { counter++; Bean bean = new Bean(res.getInt(1), res.getString(2), res.getString(3)); rollNumber.add(res.getString("rollno")); beanList.add(bean); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { db.removeConnection(); } catch (SQLException e) { e.printStackTrace(); } } if(counter>0) return SUCCESS; else return ERROR; } }
豆:
public class Bean { int rollnumber; String name; String location; public Bean(int x, String y, String z) { rollnumber = x; name = y; location = z; } getters and setters...
我需要从jsp到操作类的多个/单个更新的表单字段值 ,以便执行更新的操作。但是list(beanList)值在操作类中为空。由于它无效,因此我无法执行更新操作。1)在新的动作类(EditAction.java)中如何初始化列表对象( beanList )?这与我在ViewAction.java中声明的方式相同。2)Jsp sysntax是否正确?要求您提供帮助。提前致谢。
将 默认的无参数构造函数 添加到您的BeanClass中。
Bean
在 默认的无参数的构造函数 被调用一样,因为它是默认的:如果你不指定 任何 构造函数,它会自动创建。
相反,如果你指定另一个构造函数,例如一个与像您的参数,无参数的构造不会自动创建了,你 有 ,如果你需要它明确声明它。
Struts2需要no-args构造函数来创建您的bean。
例如,您可能有一个带有10个参数的构造函数的Bean,并在JSP页面中仅指定了其中一个:Struts必须能够创建对象并设置单个字段(通过Setter),而不必担心缺少9个参数参数。