私はSpring MVCの例を試しています。私は取得しています。このフォームを送信すると、私は春のListオブジェクトをStringに変換する方法MVC
<form:form action="booksList.html" method="post" modelAttribute="testBean">
<form:hidden path="books" />
<input type="submit" value="submit">
</form:form>
を持っている私は、JSPページで
@RequestMapping(value = "/booksList", method = RequestMethod.POST)
public String displayBooks(@ModelAttribute TestBean testBean, Model model, HttpSession session) {
// some code here
}
を持って私のコントローラで
private List<HashMap<String, String>> books;
のようなリスト型の変数を持つtestBeanを持っていますこのエラー
値を変換できません[
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を呼び出すでしょう。たとえそれを行う正しい方法がわからないとしても。