2014-09-09 4 views
0

У меня есть форма, которая берет строку. Строка структурирована так, чтобы представлять список дат (т.е. [01/01/2000 00:00:00, 01/01/2001 00:00:00]), поскольку строка будет представлять собой две отдельные записи в списке, даты не общие объекты Java Date, они являются настраиваемым типом).Преобразование значения формы Spring MVC

Когда форма отправлена, я ожидаю, что преобразованный в String List DateTime будет вызываться (ниже), которого он никогда не будет. У меня есть несколько других преобразователей, которые работают, поэтому служба преобразования настроена правильно. Единственное, что я могу придумать, это то, что шаблоны типов для преобразования из и не являются тем, чего я ожидаю.

Является ли Spring неявным образом конвертировать списки неявно? Является ли формуляр Spring формой аннотации формы: ввод или форма: textarea имеет значение для входного типа преобразования?

Любая помощь была бы принята с благодарностью!

public class DateTimeConverter implements Converter<String, List<DateTime>> { 

@Override 
public List<DateTime> convert(String arg) {//Do Stuff} 

} 

Это метод контроллера подписи для того, когда преобразование должно быть названо

@RequestMapping(method = RequestMethod.POST) 
public String newRequest(
     @Valid @ModelAttribute("newSR") ServiceRequest inSR, 
     BindingResult result, Model model) 

Атрибут Список DateTime находится внутри объекта inSR.

+0

показать подпись метода контроллера (тот, который вы ожидаете вызвать в DateTimeConverter). – DwB

+0

@ DwB Добавлен метод контроллера – MattD

+0

Вы зарегистрировали конвертер в своем webmvc-config.xml? – fredjam

ответ

1

Я никогда не был уверен в том, как конвертируются общие типы, поэтому я обычно избегаю того, чтобы Spring решила, что делать с использованием определенного типа.

В этом прецеденте, можно создать простой класс:

public class DateList { 
    private List<DateTime> list; 
    // getter, setter or any other useful method ommitted for brevity 
} 

Затем, если вы используете DateList поле в форме и зарегистрировать Converter<String, DateList>, он должен работать.

+0

Хотя это не совсем ответ, это единственный способ заставить его вызвать конвертер, имеющий инкапсулирующий объект и вызов конверта. Благодарю. – MattD

Смежные вопросы