【问题标题】: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";
            }
            

            当然,如果您在课堂上公开了属性,这不是一种优雅的做法。

            【讨论】:

              猜你喜欢
              • 2014-05-17
              • 1970-01-01
              • 1970-01-01
              • 2016-01-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-05-04
              相关资源
              最近更新 更多