今天写项目的时候,用的是jsr 303 校验。
且因为项目较小的原因,用的BindingResult 记录错误数据。
但是问题就来了:
当我将BindingResult 放在参数列表的最后时,不报错,但出现bug:此时你要进Controller的话,必须将user这个数据填写完整,而且要全对,不然就进不去。
而要解决这个问题:就必须在@Valid 注解后紧跟这个BindingResult 。
估摸这个原因:我们从前端发送ajax请求到Controller,参数是一一对应的,只有前端有这个参数,这个Controller参数列表才会有值。而如果参数没有对应上,获取没有值,肯定会报错,Controller进不去的问题。
而在这里,这个BindingResult 若是没有紧跟@Valid ,就会当成普通的参数,没有跟前端的数据对应,所以会报错。若是紧跟在后面,对应就是user这个校验过来的数据值了!