SpringMVC 400 Bad Request 问题

本文探讨了Spring MVC中出现400错误的原因及解决办法,主要涉及表单数据类型与Model不匹配的问题及参数顺序不当的情况,并提供了一个正确的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值