spring http error 400客户端发送的请求在语法上是不正确的

时间:2014-08-24 12:57:40

标签: java spring date spring-mvc

如何解决spring 400错误。

我的控制器:

@InitBinder
protected void initBinder(WebDataBinder binder) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    binder.registerCustomEditor(Date.class, new CustomDateEditor(
            dateFormat, false));
}

@RequestMapping(value = "/admin/users/edit", method = RequestMethod.POST)
public ModelAndView editUser(final @ModelAttribute AdminForm form,
                             Principal principal) 

public class AdminForm {
    ...
    User newUser;
    public User getNewUser() { return newUser; }
    public void setNewUser(User newUser) { this.newUser = newUser; }
    ...
}

public class User {
...
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    Date birthDate;
...
}

JSP文件有这个输入框:

  <form:input
   class="tcal"
   name="date"
   itemLabel="date"
   path="newUser.birthDate"/>

浏览器生成此POST请求:

  

newUser.fio =%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2 +%D0%A1%D0%B8%D0%B4%D0%BE%D1% 80 +%D0%9F%D0%BE%D0%BB%D0%B8%D0%BA%D0%B0%D1%80%D0%BF%D0%BE%D0%B2%D0%B8%D1%87&安培; newUser.login = DAS&安培; newUser.password = 8904&安培; newUser.birthDate = 08%2F04%2F2014&安培; newUser.id = 23

您可以看到还有其他字段fio,login,password和id。如果我删除birthDate,那么400错误就会消失,但我需要这个参数。

我该如何避免这个问题?

感谢名单

1 个答案:

答案 0 :(得分:2)

我的问题是在一个地方有另一个地方有java.sql.Date和java.util.Date。当我将两者都改为java.util.Date时,它起作用了。