SpringMVC 400 Bad Request 问题

在提交表单时,发生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")注解

猜你喜欢

转载自coconut-zhang.iteye.com/blog/2305124