有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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) 个答案

  1. # 1 楼答案

    一种方法是Jeevan建议的, 或者你可以修改你的spring来接受它

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

    当然,如果您在类中公开了属性,这并不是一个优雅的做法

  2. # 2 楼答案

    发布表单时,应使用@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>
    
  3. # 3 楼答案

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

    @RequestMapping(value="/property",method=RequestMethod.POST)
    
  4. # 4 楼答案

    请求正文用于向HTTP POST传递JSON或XML对象(或字节[]等原始数据)之类的内容。当您发布表单数据时,将为您处理和解析这些数据。最简单的方法是使用MVC表单:表单代码和一个命令对象,然后您将只接收一个命令对象,其中包含来自映射到该对象的表单的所有条目

  5. # 5 楼答案

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

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

    如果出现其他错误,请指定