黑马程序员技术交流社区

标题: 关于Struts2的List集合表单数据录入的问题。 [打印本页]

作者: 黑马__李龙    时间: 2012-8-4 22:15
标题: 关于Struts2的List集合表单数据录入的问题。
本帖最后由 李龙276596456 于 2012-8-4 22:23 编辑

public class Template {
         private String name;
         private List<TemplateRoad> roads;
         public String getName() {
                   return name;
         }
         public void setName(String name) {
                   this.name = name;
         }
         public List<TemplateRoad> getRoads() {
                   return roads;
         }
         public void setRoads(List<TemplateRoad> roads) {
                   this.roads = roads;
         }
}
public class TemplateRoad {
         private int id;
         private Integer roadNo;
         
         private List<TemplateCurve> curves ;
         public Integer getRoadNo() {
                   return roadNo;
         }
         public void setRoadNo(Integer roadNo) {
                   this.roadNo = roadNo;
         }
         public int getId() {
                   return id;
         }
         public void setId(int id) {
                   this.id = id;
         }
         public List<TemplateCurve> getCurves() {
                   return curves;
         }
         public void setCurves(List<TemplateCurve> curves) {
                   this.curves = curves;
         }
}

public class TemplateCurve {

         private Integer curveNo;
         private String name;

         public Integer getCurveNo() {
                   return curveNo;
         }
         public void setCurveNo(Integer curveNo) {
                   this.curveNo = curveNo;
         }
         public String getName() {
                   return name;
         }
         public void setName(String name) {
                   this.name = name;
         }        
}
Action 很简单,就是接受画面的录入数据传给后台存到数据库中。画面要实现的功能也很简单,就是可以动态的增加或减少Template 中List<TemplateRoad> roads中的元素个数,还有可以动态的增加或减少Template中List<TemplateRoad> roads中的元素里的List<TemplateCurve> curves中的元素个数。
我现在能想到的方法是不使用Struts2的标签,而是利用JQuery动态的在页面添加或消除:
var rno =$("tr[rno]").length;
var road = “<tr rno='"+rno+"'><td class='deleteRoad'><input type='button' value='删除road' /></td><td class='roadNo'><input type='text' name='template.roads["+rno+"].roadNo' size='2' value='' /></td><td class='addCurve' align='left'><table ><tr><td><input type='button' value='增加曲线' /></td><td><input type='button' value='显示/隐藏' /></td></tr></table></td></tr>"
$("#roads").append(road);
但是这个方法太繁琐了,要在每次添加或删除之后计算<input type='text' name='template.roads[0].roadNo' size='2' value='' />标签里的roads的i值。再加上后面还有一个TemplateCurve(template.roads[0].curves[0].name),工作量实在太大了,不知道大家有没有其他更好的办法。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2