Странная проблема при связывании динамического списка

НАЧАЛЬНЫЙ ВОПРОС (ОБНОВЛЕНО НИЖЕ)

Я использую список AutoPopulationList для создания объекта, вызывающего конструктор с некоторыми параметрами. Что-то вроде кода ниже. Раньше я использовал его без каких-либо проблем, но сейчас не могу заставить его работать.

public class Tree {
    ...
    private List<Node> nodes = new AutoPopulatingList<Node>(new ElementFactory<Node>() {
        @Override
        public Node createElement(final int index) throws ElementInstantiationException {
             //call custom controller
             return new Node(index, ...other params);
        }       
    });
    ...
    //getters & setters
}

Объект отображается в контроллере как параметр атрибута модели ( @ModelAttribute Tree ). Поэтому я отправляю в форме такие значения, как:

nodes[0].field1 = some value
nodes[1].field2 = other value

Но когда я отправляю эти параметры, Spring не может создать экземпляр объекта Node , потому что он '

Кто-нибудь знает, почему это может происходить? Может ли это быть ошибкой?

Спасибо.


ОБНОВЛЕНИЕ

Я создал собственную реализацию списка, похожего на AutoPopulationList, чтобы проверить, была ли это проблема AutoPopulatingList, но происходит то же самое. Реализация просто переопределяет:

public Node get(int index) {
    //here just creates the object it it doesn't exist in the position
}

Итак, проблема в том, почему, когда я делаю в контроллере:

public String controllerMethod(
@ModelAttribute Tree tree, BindingResult result, Model model){
     ...
}

и отправляю узлы [0] .something, поскольку в позиции 0 индекса нет ни одного объекта, он должен экземпляр объект. Но проблема в том, что он вызывает конструктор Node () перед вызовом tree.get (0). Итак, почему Spring вызывает конструктор по умолчанию? Как я могу заставить его использовать tree.get (0) для создания экземпляра объекта вместо Node ()?

15
задан Javi 12 January 2011 в 18:02
поделиться