首页
学习
活动
专区
圈层
工具
发布
25 篇文章
1
SpringBoot2.x系列教程(五十九)SpringBoot实现国际化i18n功能
2
SpringBoot2.x系列教程(五十五)Mybatis反向生成Java代码
3
SpringBoot2.x系列教程(四十四)WebSocket基础知识简介
4
SpringBoot2.x系列教程(四十三)SpringBoot整合Swagger2
5
SpringBoot2.x系列教程(五十)Spring Boot Idea中热部署(自动刷新)
6
SpringBoot2.x系列教程(四十二)SpringBoot中构建RESTful服务
7
SpringBoot2.x系列教程(三十八)SpringBoot配置Https访问
8
SpringBoot2.x系列教程(三十六)SpringBoot之Tomcat配置
9
SpringBoot2.x系列教程(三十四)Thymeleaf自动配置源码解析
10
SpringBoot2.x系列教程(三十三)Thymeleaf手动渲染实例讲解
11
SpringBoot2.x系列教程(三十二)Thymeleaf资源导入及公共布局
12
SpringBoot2.x系列教程(三十一)Thymeleaf的基本使用
13
SpringBoot2.x系列教程(三十)SpringBoot集成Thymeleaf
14
SpringBoot2.x系列教程(二十九)freemarker自动配置源码解析
15
SpringBoot2.x系列教程(二十八)freemarker基本语法使用
16
SpringBoot2.x系列教程(二十六)Springboot集成freemarker
17
SpringBoot2.x系列教程(二十五)Jsp中使用jstl和引入静态资源
18
SpringBoot2.x系列教程(二十三)SpringBoot集成Jsp
19
SpringBoot2.x系列教程(二十二)简单参数校验及统一异常处理
20
SpringBoot2.x系列教程(二十)自定义参数校验注解
21
SpringBoot2.x系列教程(十三)Jackson命名策略及自定义序列化
22
SpringBoot2.x系列教程(十)Json之基础使用详解
23
SpringBoot2.x系列教程(十九)Validation数据校验基础使用
24
SpringBoot2.x系列教程(九)基于Postman的RESTful接口调用
25
SpringBoot2.x系列教程(八)SpringBoot常用注解汇总

SpringBoot2.x系列教程(二十二)简单参数校验及统一异常处理

在之前章节,我们将了如何使用校验框架对JavaBean中的参数进行校验,那么如果只是一些简单参数该如何校验呢?是否也可以用BindingResult接收呢?

很遗憾,针对简单参数(比如String,Integer等)并无法使用BindingResult接收。如果强行使用,要么无效(特定场景)要么则会抛出如下异常:

代码语言:javascript
复制
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: An Errors/BindingResult argument is expected to be declared immediately after the model attribute, the @RequestBody or the @RequestPart arguments to which they apply: public java.lang.String com.secbro2.controller.AccountController.getAmountByAccountNo(java.lang.String,org.springframework.validation.BindingResult)

也就是说针对简单参数,如果我们使用校验注解进行校验,则会抛出异常,通过页面访问时会返回500错误。

面对这种情况有两种处理策略:如果是调整页面的时候参数校验失败的话,让其跳转错误页面(后面章节再详细讲)。如果是接口参数校验失败的话,可以进行统一处理,并返回。

首先不说使用BindingResult接收参数,当我们使用如下方式,对简单参数进行校验时,统一会抛出异常。具体使用如下:

代码语言:javascript
复制
@Validated
@RestController
public class AccountController {

	@GetMapping("/getAmountByAccountNo")
	public String getAmountByAccoun
下一篇
举报
领券