Reputation: 3975
I have something like
@RequestMapping("/property")
@ResponseBody
public String property(@RequestBody UserDto userDto ) {
System.out.println(userDto.getUsername());
System.out.println(userDto.getPassword());
return "Hello";
}
in my controller.
But it gives me an error when I post with
<form method="post" action="http://localhost:8080/home/property">
<input name="username"/>
<input name="password"/>
<input type="submit"/>
</form>
in my html. Where am I going wrong.
Upvotes: 6
Views: 45698
Reputation: 145
Request mapping default method is GET. have to specify url method with RequestMapping.
@RequestMapping(value="/property",method=RequestMethod.POST)
Upvotes: 1
Reputation: 333
if you are getting http error 500? then try using
@RequestMapping(value = "/property", method = RequestMethod.POST )
If some other error please specify.
Upvotes: 0
Reputation: 1992
One way is what Jeevan suggested, or you can modify your spring to accept it like ,
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";
}
ofcourse if you have exposed attributes in class, which is not an elegant practice.
Upvotes: -1
Reputation: 41188
Request body is for when you are passing in something like a JSON or XML object (or raw data such as byte[]) to the HTTP POST. When you are POSTing form data then that is handled and parsed for you. The simplest way is to use the MVC form:form code with a command object, and then you will just receive a command object with all the entries from the form mapped to the object.
Upvotes: 2
Reputation: 6079
When you are posting a form, you should use @ModelAttribute
annotation.
Change your code to :
@RequestMapping("/property")
@ResponseBody
public String property(@ModelAttribute("userDto") UserDto userDto ) {
System.out.println(userDto.getUsername());
System.out.println(userDto.getPassword());
return "Hello";
}
And your HTML / JSP can be :
<form method="post" name="userDto" action="http://localhost:8080/home/property">
<input name="username"/>
<input name="password"/>
<input type="submit"/>
</form>
Upvotes: 4