【发布时间】:2012-01-13 07:55:33
【问题描述】:
我正在尝试 Spring MVC 示例。我有一个具有 List 类型变量的 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] 的值转换为属性“books[0]”所需的类型 [java.util.HashMap]。
我该如何解决这个错误?请帮忙
更新:
I have seen that我也可以这样做。
@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) 会在我的控制器方法public String displayBooks(...) 之前调用jsut。甚至我都不知道这样做是否正确。
【问题讨论】:
标签: spring-mvc