Вопрос

У меня есть командный объект, состоящий из примитивных полей и поля объекта.Как мне привязать поля моей формы к полям объекта?

Я пытался это сделать, но безрезультатно

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

Я получаю эту ошибку

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

Мой командный класс выглядит следующим образом

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
}
Это было полезно?

Решение

Ваш список должен быть предварительно заполнен таким количеством объектов LearningActivity, на которое вы планируете ссылаться (используя активность [0], действие [1] и т. д.), или это должен быть отложенный список. Ленивый список - это список, который будет заполняться пустыми объектами при ссылке на данный индекс.

Комментарий указывает на то, что вы пытаетесь использовать Apache Commons LazyList, который должен работать - вам не хватает директивы импорта? Однако в качестве альтернативы есть реализация списка отложенных ссылок Spring, которая называется AutoPopulationList.

Другие советы

Здесь возможны две проблемы:

  1. activity.activity недопустимо (если только ваши геттеры не соответствуют вашим переменным-членам), потому что Course.activity это список.Вам нужно обратиться к определенному элементу списка - например activity[0].activity.Вам также нужно будет убедиться, что он действительно существует.

  2. Правильно ли вы настроили свой FormController?Проходит ли это Course экземпляр для просмотра как следует?Взгляните на Учебное пособие по Spring MVC для примера.

Если после того, как вы исправили # 1 и убедились, что # 2 выполнено правильно, ошибка не исчезает, пожалуйста, опубликуйте более подробную информацию (FormController mapping / source).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top