struts如何从jsp页面得到list对象
问题价格变化记录 用struts框架可以通过form轻松所jsp表单中的字段属性传到action中,不过这都是针对一个对象而言的,如果想保存一个列表,按传统的方式就不行了,本文将探索一种十分巧秒的方式,对于页面列表也对作为一个对象直接通过form传递到action中。
下面是几种组件的设计
Form:
-----------
public class AutoTwForm extends BaseForm{
private ArrayList sclist = new ArrayList(); //对应页面上的列表
public ArrayList getSclist() {
return sclist;
}
public void setSclist(ArrayList sclist) {
this.sclist = sclist;
}
//提交页面时动态构造list对象的核心方法
public WtsucaiObj getWtsucaiObja(int i) {
if (sclist == null)
sclist = new ArrayList();
if (sclist.size() <= i) {
for (int j = sclist.size(); j <= i; j++)
sclist.add(new WtsucaiObj());
}
return (WtsucaiObj) sclist.get(i);
}
}
jsp片段:
----------
本段内容请下载,下载链接在二楼。
注意wtsucaiObja,要与form中的核心方法相对应,它相当于form中的一个属性!
Action片段:
-------------
public ActionForward savewtsucailist(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
AutoTwForm cform = (AutoTwForm)form;
WtsucaiDAO dao = (WtsucaiDAO)NLLDDAOTool.getBean("wtsucaiDAO");
List list = cform.getSclist();
try {
dao.updBiaotiByList(list);
request.setAttribute("myerror", "修改成功!");
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("myerror", e.getMessage());
}
return wtsucailist(mapping, form, request, response);
}
在Action中直接取出来list用就行了
List list = cform.getSclist();
有兴趣的可试一下,在struts1.x、struts2.0中都可以,有清楚请回复,欢迎在java在线问答:www.javakt.com提问交流。
<c:forEach var="item" items="" varStatus="ii">
<tr class="tab-5">
<td><c:out value=""/></td>
<td>
<input type=hidden name="wtsucaiObja[<c:out value=''/>].id" value="<c:out value=''/>"/>
<input type=text name="wtsucaiObja[<c:out value=''/>].biaoti" value="<c:out value=''/>" size="86"/>
</td>
<td align="center">
<input type="button" value="修改" οnclick="upd('<bean:write name="item" property="id"/>')"/>
<input type="button" value="删除" οnclick="del('<bean:write name="item" property="id"/>')"/>
</td>
</tr>
</c:forEach>