Java Spring中的命令对象

Java Spring中的命令对象,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个由基本字段和对象字段组成的命令对象。如何将表单字段绑定到对象中的字段 我试过这样做,但没有用 <form:form commandName="course" method="POST"> <form:input path="activity.activity"/> . . . </form:form> 我的命令类是这样的 public class Course { private

我有一个由基本字段和对象字段组成的命令对象。如何将表单字段绑定到对象中的字段

我试过这样做,但没有用

<form:form commandName="course" method="POST">
     <form:input path="activity.activity"/>
         .
         .
         .
</form:form>
我的命令类是这样的

public class Course {
    private long id;
    private String owner;
    private String title;
    private List<LearningActivity> activity = new ArrayList<LearningActivity>();

    //getters and setters
}

public class LearningActivity {
private long ID;
private String activity;
    private String link;

    //getters and setters
}
公共课{
私人长id;
私人字符串所有者;
私有字符串标题;
私有列表活动=新建ArrayList();
//接球手和接球手
}
公共课堂学习活动{
私人长ID;
私人字符串活动;
私有字符串链接;
//接球手和接球手
}

这里有两个可能的问题:

  • activity.activity
    无效(除非您的getter与您的成员变量不对应),因为
    Course.activity
    是一个列表。您需要处理特定的列表元素-例如,
    活动[0]。活动
    。你还必须确保它确实存在

  • 您是否正确配置了FormController?它是否通过
    课程
    实例进行查看?请看一个例子


  • 如果在修复#1并验证#2正确完成后,错误仍未消失,请发布更多详细信息(FormController mapping/source)。

    您的列表需要预先填充您计划引用的尽可能多的LearningActivity对象(使用活动[0]、活动[1]等),或者需要是一个惰性列表。惰性列表是在引用给定索引时用空对象填充自身的列表


    一条注释表明您正在尝试使用ApacheCommonsLazylist,这应该可以工作——您是否缺少导入指令?然而,作为替代方案,还有一个名为AutoPopulatingList的Spring惰性列表实现。

    我尝试了#1,但得到了一个IndexOutOfBoundsException。我找到了这个教程:mattfleming.com/node/134,并尝试了do List acitivity=LazyList.getList(new List());但是我得到了NoClassDefFoundError:org/mortbay/util/LazyList。我已经尝试将commons-collection.jar放在我的构建路径和web inf/lib路径中,但不知何故,应用程序仍然找不到iYou get
    IndexOutOfBounds
    ,因为您的列表为空。正如我上面所说的,您需要确保list元素实际上存在。你为什么要从这个列表开始呢?您要在一个页面上编辑多个活动吗?如果是这样,您将需要遍历列表。如果不是,考虑将当前活动暴露为单值属性。我使用雅加达公共空间中的懒惰列表来填充我的列表。谢谢
    public class Course {
        private long id;
        private String owner;
        private String title;
        private List<LearningActivity> activity = new ArrayList<LearningActivity>();
    
        //getters and setters
    }
    
    public class LearningActivity {
    private long ID;
    private String activity;
        private String link;
    
        //getters and setters
    }