前端页面在输入框设置了表单校验,我们输入时会有数据限制只能输入一些符合前端校验规则的数据。但是如果用postman向后端发送请求 数据没有限制规则。所以需要在后端也设置上一些校验规则。 其实本人觉得像什么不能为空不能为空字符串 在数据库创建表创建字段时可以设置上notnull,是吧这样也不会说存进数据。不同字段设置的字段类型不同,不为空类型不对也存不进去,个人感觉数据库完全可以完成此项任务。
但是校验也有好处,它可以告知你哪个字段出的问题。很直观的就能发现问题所在。
1.
<dependency> <groupId>jakarta.validation</groupId> <artifactId>jakarta.validation-api</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.17.Final</version> <scope>compile</scope> </dependency>
这两个依赖包必须要有的,一般springboot就包含了jakarta.validation-api 包所以可以不添加这个依赖。在springboot2.3.2.RELEASE后 @NotBlank等校验注解会失效,所以手动需要引入hibernate-validator 这个依赖包。
2. 开始校验----自定义返回结果
在实体类的某个属性上加上@NotBlank来检验这个属性。
然后在controller类里面的方法有添加方法或者修改方法 用到这个属性 ,在方法的参数里加@Valid注解。BindingResult 这个对象包含校验失败的结果,result.hasErrors() 表示请求是否失败如果失败为true,result.getFieldErrors()表示获取到校验的错误结果,用forEach 方法拿到里面的错误信息,item.getDefaultMessage() 表示获取到错误结果的错误信息,这个错误信息是@NotBlank(message = "品牌名不能为空") message信息。item.getField() 表示获取错误结果中产生错误的字段或者说属性。 然后将错误信息 和错误属性封装到map里面 返回给发送请求的客户端
实际返回效果