`
coconut_zhang
  • 浏览: 531447 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论
阅读更多

在提交表单时,发生400错误,并未进入save方法。


1

2

3

4

5

6

7

8

9

10

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

    public String save(@ModelAttribute("user"@Valid UserEntity user,

      Locale local,

      BindingResult results){

        String message = messageSource.getMessage("name.not.empty"null, local);

        System.out.println(message);

        if(results.hasErrors())

            return "/user/add";

        return "redirect:/user/list";

    }

 

经google后,发现大多是因为表单数据类型与model不匹配,造成。
但是,经过一再减少model内容后,提交表单,问题依旧。
终于在iteye论坛发现:springMVC参数顺序不同导致异常

约定的BindingResult必须紧随@valid之后。    

原来我这里的400是这个原因导致的。以下为正确顺序:


1

2

3

4

5

6

7

8

9

10

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

    public String save(@ModelAttribute("user"@Valid UserEntity user,

      BindingResult results,

      Locale local){

        String message = messageSource.getMessage("name.not.empty"null, local);

        System.out.println(message);

        if(results.hasErrors())

            return "/user/add";

        return "redirect:/user/list";

    }

 

在解决问题之后,做一下总结:
springmvc造成400错误的原因现在知道的有以下两点:

1、提交表单数据类型与model不匹配

2、方法参数顺序不正确

3、另一种是form表单中有日期,spring不知道该如何转换,如要在实体类的日期属性上加@DateTimeFormat(pattern="yyyy-MM-dd")注解

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics