【问题标题】:Pass Map value to Spring MVC controller using <form:hidden>使用 <form:hidden> 将 Map 值传递给 Spring MVC 控制器
【发布时间】:2014-04-15 06:48:26
【问题描述】:

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

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

【问题讨论】:

标签: java spring spring-mvc


【解决方案1】:

&lt;form:hidden id="passMapData" path="passMapData"/&gt; 用于传递隐藏的String 数据。基本上它是一个隐藏字段,就像 html 中的 &lt;input type='hidden'/&gt;

你不能在这里传递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 相同的@,

request.getAttribute("passMapData");

希望这会有所帮助。

【讨论】:

  • 感谢您确认我们无法在表单提交中通过地图。我真的很感激。我要把它做成字符串。
猜你喜欢
  • 2013-03-19
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
相关资源
最近更新 更多