在提交页面时,我需要做一些处理并将一些数据发送到控制器。我觉得'Map'适合我传递数据的要求。这就是我在做的事情:
<form:hidden id="passMapData" path="passMapData"/>
@RequestMapping(value = "/newPage/testData", method = RequestMethod.POST)
public String newPageTestData(@Valid @ModelAttribute("npf") NewPageForm npf, BindingResult result, Model model) {
}
public class NewPageForm {
private Map<String, String> passMapData = null;
public Map<String, String> getPassMapData() {
return passMapData;
}
public void setPassMapData(Map<String, String> passMapData) {
this.passMapData = passMapData;
}
}
在提交表单时,控制器中的BindingResult显示错误“IllegalStateException:无法将类型[java.lang.String]的值转换为必需的类型[java.util.Map]”
我们不能在表单提交中将Map类型传递给控制器吗?
答案 0 :(得分:4)
<form:hidden id="passMapData" path="passMapData"/>
用于传递隐藏的String
数据。基本上它是一个隐藏字段,如html中的<input type='hidden'/>
。
您无法在此处传递HashMap
,因此您的 NewPageForm.java 必须是,
public class NewPageForm {
private String passMapData = null;
public String getPassMapData() {
return passMapData;
}
public void setPassMapData( String passMapData) {
this.passMapData = passMapData;
}
}
注意:如果您需要将HashMap
传递给controller
,只需将Hashmap
设置为request
{ {1}},
JSP
您可以在request.setAttribute("passMapData",Your HashMap);
中获得相同的Hashmap
,
controller
希望这有帮助。