我有类似
的东西@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中。我哪里错了。
答案 0 :(得分:3)
发布表单时,应使用@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>
答案 1 :(得分:2)
请求正文用于将类似JSON或XML对象(或原始数据,如byte [])的内容传递给HTTP POST。当您发布表单数据时,将为您处理和解析该表单数据。最简单的方法是使用MVC表单:使用命令对象的表单代码,然后您将只接收一个命令对象,其中包含映射到对象的表单中的所有条目。
答案 2 :(得分:1)
请求映射默认方法是GET。必须使用RequestMapping指定url方法。
@RequestMapping(value="/property",method=RequestMethod.POST)
答案 3 :(得分:0)
如果您收到http错误500?然后尝试使用
@RequestMapping(value = "/property", method = RequestMethod.POST )
如果有其他错误请指定。
答案 4 :(得分:-1)
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";
}
当然,如果你在课堂上暴露了属性,这不是一种优雅的做法。