Я пробую Spring MVC пример. У меня есть testBean, который имеет переменную типа списка, как
private List<HashMap<String, String>> books;
В моем контроллере у меня есть
@RequestMapping(value = "/booksList", method = RequestMethod.POST)
public String displayBooks(@ModelAttribute TestBean testBean, Model model, HttpSession session) {
// some code here
}
На моей странице JSP у меня есть
<form:form action="booksList.html" method="post" modelAttribute="testBean">
<form:hidden path="books" />
<input type="submit" value="submit">
</form:form>
Когда я отправляю эту форму, я получаю эту ошибку
Невозможно преобразовать значение типа [java.lang.String
] в требуемый тип [java.util.HashMap
] для свойства 'books[0]
'.
Как я могу решить эту ошибку? пожалуйста помогите
Обновлен:
Я видел, что Я тоже так могу.
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(List.class, "testBean", new CustomCollectionEditor(List.class) {
@Override
protected Object convertElement(Object element) {
TestBean testBean = new TestBean();
if (element != null) {
List<HashMap<String, String>> id = (List<HashMap<String, String>>) element;
testBean.setFilters(id);
}
return testBean;
}
});
}
Но я не совсем понимаю вышеописанный метод, могут быть некоторые ошибки в том, что я написал. И я не знаю, как и откуда я могу вызвать метод convertElement(Object element)
. я понимаю, что initBinder(WebDataBinder binder)
вызовет jsut до того, как мой метод контроллера public String displayBooks(...)
. Даже я не знаю, правильно ли это делать.