Spring MVC Post Request

时间:2013-12-11 09:22:34

标签: java spring 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中。我哪里错了。

5 个答案:

答案 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";
}

当然,如果你在课堂上暴露了属性,这不是一种优雅的做法。