繁体   English   中英

使用以下方式将Map值传递给Spring MVC控制器<form:hidden>

[英]Pass Map value to Spring MVC controller using <form:hidden>

在提交页面时,我需要做一些处理并将一些数据发送到控制器。 我觉得“地图”很适合我传递数据的要求。 这是我在做什么:

JSP:

<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) {

}

NewPageForm.java:

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类型传递给控制器​​吗?

<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设置为JSPrequest

request.setAttribute("passMapData",Your HashMap);

您可以在controller获得与Hashmap相同的Hashmap

request.getAttribute("passMapData");

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM