【问题标题】:Spring MVC Post RequestSpring MVC 发布请求
【发布时间】:2013-12-11 09:22:34
【问题描述】:
我有类似的东西
@RequestMapping("/property")
@ResponseBody
public String property(@RequestBody UserDto userDto ) {
System.out.println(userDto.getUsername());
System.out.println(userDto.getPassword());
return "Hello";
}
在我的控制器中。
但是当我发布时它给了我一个错误
<form method="post" action="http://localhost:8080/home/property">
<input name="username"/>
<input name="password"/>
<input type="submit"/>
</form>
在我的 html 中。我哪里错了。
【问题讨论】:
标签:
java
spring
spring-mvc
post
【解决方案1】:
当你发布一个表单时,你应该使用@ModelAttribute注解。
将您的代码更改为:
@RequestMapping("/property")
@ResponseBody
public String property(@ModelAttribute("userDto") UserDto userDto ) {
System.out.println(userDto.getUsername());
System.out.println(userDto.getPassword());
return "Hello";
}
而你的 HTML/JSP 可以是:
<form method="post" name="userDto" action="http://localhost:8080/home/property">
<input name="username"/>
<input name="password"/>
<input type="submit"/>
</form>
【解决方案2】:
请求正文用于将 JSON 或 XML 对象(或原始数据,如 byte[])传递到 HTTP POST 时。当您发布表单数据时,会为您处理和解析。最简单的方法是使用带有命令对象的 MVC 表单:表单代码,然后您将收到一个命令对象,其中包含映射到该对象的表单中的所有条目。
【解决方案3】:
请求映射默认方法是 GET。必须使用 RequestMapping 指定 url 方法。
@RequestMapping(value="/property",method=RequestMethod.POST)
【解决方案4】:
如果您收到 http 错误 500?然后尝试使用
@RequestMapping(value = "/property", method = RequestMethod.POST )
如有其他错误请说明。
【解决方案5】:
Jeevan 建议的方法之一,
或者你可以修改你的弹簧来接受它,
UserDto userDto;
@RequestMapping("/property")
@ResponseBody
public String property(@RequestParam("username") userDto.username, @RequestParam("password") userDto.password) {
System.out.println(userDto.getUsername());
System.out.println(userDto.getPassword());
return "Hello";
}
当然,如果您在课堂上公开了属性,这不是一种优雅的做法。