2013-12-11 41 views
3

我有我的控制器类似Spring MVC的POST请求

@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

。我哪里错了。

回答

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> 
2

请求的身体是你逝去的东西就像一个JSON或XML对象(或生数据,如byte [])发送到HTTP POST。在发布表单数据时,会为您处理和分析这些数据。最简单的方法是使用MVC表单:带有命令对象的表单代码,然后您将只接收一个命令对象,其中包含映射到该对象的所有表单条目。

0

一种方法是什么杰文建议, 也可以修改你的春天来接受它像,

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如果你已经暴露在课堂上,这不是一个优雅的实践属性。

0

如果你得到http错误500?然后尝试使用

@RequestMapping(value = "/property", method = RequestMethod.POST) 

如果还有其他错误,请指定。

1

请求映射的默认方法是GET。必须使用RequestMapping指定url方法。

@RequestMapping(value="/property",method=RequestMethod.POST)