表单提交数据里面包含子类集合的问题

这是实体类里的属性,其中包含一个子类的list

 public class Construct {
    //专题建设ID
    private String id;
    //专题建设标题
    private String title;
    //责任部门
    private String deptId;
    //专题建设描述
    private String depict;
    //建设开始时间
    private String beginTime;
    //建设预计结束时间
    private String endTime;
    //创建时间
    private Date createTime;
    //专题建设时间节点
    private List<ConstructSub> constructSub;
    //查询条件
    private String keys;

页面添加的时候是根据客户需要生成一行让客户输入时间节点及信息,
客户可以填10条,也可以删除第8条,值提交9条。
虽然我添加一行的时候写上了比如第八条 constructSub[7].nodeTime,但是客户如果删除了这条数据,那么这个list还是有10条,只不过第八条里面都是null
有没有自动封装的方法,没有de话,那就只能这么用了,后台判断list里的值是否为null在去掉...好像有点麻烦

哥哥们,我是页面提交的时候,controller里不接收list啊,图片说明

我点击添加节点按钮,多出来一行,我要把这些节点一起跟着我整个表单一起提交
后台接收的时候construst所有的属性都有值,唯独List construct这个属性没有, 如果我页面是用 construct[0].nodeTime,给标签起name,可以拿到,可是如果用户删除了这条,我自己创建的自增还是继续增加,list里就多了一条空记录

你这应该问题应该是可以动态增加记录。建议你可以换一种思路,不一定要在创建行的时候就去维护index,你可以在前端submit的时候使用jquery去维护index(去修改name属性)。这样就不会出现你说的index不连续的问题

如果是在jsp页面,将后台传进的值用foreach标签遍历后,var的值if标签判断后不为null再输出

那就自己定义一个方法咯:return list。 自定义的方法能实现 从新排序 list 集合。

页面中用/c:forEach标签,该标签需要在页面中添加:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


这样子你在删除几条后提交,会得到相应剩余的几条数据。name="constructSub.title" 这里的constructSub必须写上,因为你接收的是一个list.

            检查一下你的list中的属性的set/get,或者看看提交时的属性名和实体类中的属性名以及数据类型对应上了没,我看你第一个表单是日期,

看看你的日期格式和实体类中的一致不

            关于你说删除标签后list出现null的情况,给你一个参考建议,当你点击添加节点的时候,你的input标签中对应的construct[0]下标应该由0+1,
          当你点击删除的时候,对应的你的下标应该-1,你可以定义一个变量count来记录下标,再定义一个变量用来添加下标的元素,即counttt=count当点击添加的时候,添加input标签,name属性construct[0]的下标用counttt来控制,construct[counttt],完事给count++

            删除的话会比较麻烦一些,首先,你要先获取到用户删除的节点的下标,然后把所有大于此下标的元素下标全部--,然后把此下标用jQquery的
            empty方法抹除,最后还要把count--