【发布时间】:2015-05-09 21:44:06
【问题描述】:
我在以 JSON 格式发送表单数据并使用控制器处理它时遇到了一些问题。使用 spring 注释来解决这个问题的“最佳”方法是什么?
我希望我可以将表单数据作为对象发送到控制器,并让控制器自动将其映射到模型,但我收到错误
服务器拒绝此请求,因为请求实体的格式不受所请求方法的请求资源支持。
表格
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP JSON</title>
</head>
<body>
<h2>Please enter name below to register</h2>
<br>
<h1>User Name</h1>
<form method="post" action="/SpringRedirecting/process/" enctype="application/json">
<br>
<input type="text" name="uname" value="" />
<br>
<input type="text" name="password" value="" />
<br>
<input type="submit" value="Submit" />
</form>
</body>
控制器
@RequestMapping(method = RequestMethod.POST, consumes = "application/json")
public String processRequest(@RequestBody final User user, ModelMap map, HttpServletRequest req){
map.addAttribute("user", user);
return "output";
}
【问题讨论】:
-
您是否检查过该表单确实是作为 JSON 提交的?
-
您好 JBNizet,我已将 enctype 设置为 JSON 是否足够?
-
规范说:在过渡期间,不支持这种编码的用户代理将回退到使用 application/x-www-form-urlencoded。。为什么不使用浏览器控制台检查通过网络传输的内容?
-
另外,如果您没有在
<mvc:message-converters>块内配置MappingJackson2HttpMessageConverterbean,那么 Jackson 不会用于自动将您的用户从 JSON 反序列化为对象。跨度> -
@Jnanathan 你试过我的解决方案了吗?
标签: json spring forms model-view-controller controller