【问题标题】:400 bad request spring mvc controller with application/x-www-form-urlencoded data带有 application/x-www-form-urlencoded 数据的 400 错误请求 spring mvc 控制器
【发布时间】:2015-03-20 03:13:16
【问题描述】:

我有一个 spring mvc 控制器,它接收 application/x-www-form-urlencoded 数据。我正在从 html 表单向该控制器发布数据,并且我的表单中有日期字段。我的问题是,当我为日期发送空值时,我收到错误 400 bad request,当我指定日期值时它工作正常。

这是我的 Spring MVC 控制器

@RequestMapping(value="/createorderform",method=RequestMethod.POST,headers = "content-type=application/x-www-form-urlencoded")
public void createOrder(Model model,  @ModelAttribute Order order,HttpSession session){
    System.out.println("Inside Order Controller");  
    String CustomerName;
    System.out.println("hiiiii");
    Customer customer=null;
}

当我发送空日期值时,控制不会进入 mvc 控制器。如何允许我的 mvc 控制器采用空值?

【问题讨论】:

  • 你在没有headers = "content-type=application/x-www-form-urlencoded"的情况下测试过吗?
  • 感谢您的回复,是的,我测试了,但它不起作用,现在我通过添加 BindingResult 错误解决了这个问题,它现在可以正常工作了。
  • 很高兴您解决了您的问题。您应该添加自己的解决方案作为答案,这样它将帮助其他有同样问题的人。我会赞成它。不要忘记放代码和一点解释。 :)

标签: java spring-mvc


【解决方案1】:

我使用BindingResult解决了这个问题

public void createOrder(Model model, @Valid @ModelAttribute Order order, BindingResult errors,HttpSession session){


    if (errors.hasErrors()) {
        // error handling code goes here.
        System.out.println("inside controlelr");
      }

@Valid 告诉 spring 控制器验证 Order 对象和 BindingResult 对象保存验证结果并绑定可能发生的错误。 BindingResult 必须紧跟在模型对象之后

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 2014-03-30
    • 2019-06-14
    • 2013-05-03
    相关资源
    最近更新 更多