Spring中的命令对象

时间:2009-09-15 21:39:04

标签: java spring spring-mvc

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

我试过这样做但无济于事

<form:form commandName="course" method="POST">
     <form:input path="activity.activity"/>
         .
         .
         .
</form:form>

我收到此错误

org.springframework.beans.NotReadablePropertyException: 
      Invalid property 'course' of bean class

My Command类就像这样

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
}

2 个答案:

答案 0 :(得分:3)

您的列表需要预先填充与您计划引用的LearningActivity对象一样多(使用activity [0],activity [1]等),或者它需要是一个惰性列表。惰性列表是一个列表,当引用给定索引时,它将使用空对象填充自身。

注释表明您正在尝试使用Apache Commons LazyList,它应该有效 - 您是否缺少导入指令?但是,作为替代方案,有一个名为AutoPopulatingList的Spring惰性列表实现。

答案 1 :(得分:2)

这里有两个可能的问题:

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

  2. 您是否正确配置了FormController?它是否通过Course实例来查看它应该如何?请查看Spring MVC tutorial示例。

  3. 如果您修复#1并确认#2正确完成后错误消失,请发布更多详细信息(FormController映射/来源)。