电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SpringBoot @Validated注解實現參數分組校驗的方法實例

瀏覽:122日期:2023-04-25 14:48:55

前言

在前后端分離開發的時候我們需要用到參數校驗,前端需要進行參數校驗,后端接口同樣的也需要,以防傳入不合法的數據。

1、首先還是先導包,導入pom文件。

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>

2、解釋一下注解的作用

@Null 限制只能為null@NotNull 限制必須不為null@NotEmpty 只作用于字符串類型,字符串不為空,并且長度不為0@NotBlank 只作用于字符串類型,字符串不為空,并且trim()后不為空串@AssertFalse 限制必須為false@AssertTrue 限制必須為true@DecimalMax(value) 限制必須為一個不大于指定值的數字@DecimalMin(value) 限制必須為一個不小于指定值的數字@Digits(integer,fraction) 限制必須為一個小數,且整數部分的位數不能超過integer,小數部分的位數不能超過fraction@Future 限制必須是一個將來的日期@Past 驗證注解的元素值(日期類型)比當前時間早@Max(value) 限制必須為一個不大于指定值的數字@Min(value) 限制必須為一個不小于指定值的數字@Pattern(value) 限制必須符合指定的正則表達式@Size(max,min) 限制字符長度必須在min到max之間@Email 驗證注解的元素值是Email,也可以通過正則表達式和flag指定自定義的email格式

3、在實體類加上要驗證的字段。(我這里隨便寫下)

SpringBoot @Validated注解實現參數分組校驗的方法實例

標注的地方就是用來分組校驗的,下下面會解釋。

@Datapublic class LoginVo { @ApiModelProperty(value = '用戶名稱') @NotEmpty(message = '用戶名不能為空!',groups = LoginModel.class) @NotEmpty(message = '添加時用戶名不能為空!',groups = SaveModel.class) private String userName; @ApiModelProperty(value = '密碼') @Size(min = 2,message = '密碼最少為2位',groups = LoginModel.class) @Size(min = 6,message = '密碼最少為6位',groups = SaveModel.class) private String password;}

通過groups的屬性來分組,假設我在使用登錄分組校驗的時候,設定用戶名不能為空和密碼最少為2位的驗證。而在添加分組設定添加時用戶名不能為空和密碼最少為6位的驗證。

4、在來解釋下上面標注的分組接口。

LoginModel

import javax.validation.groups.Default;public interface LoginModel extends Default {}

必須繼承默認的Defaut接口不然后拋出異常。

SaveModel

import javax.validation.groups.Default;public interface SaveModel extends Default{}

5、在controller的接口上加上@Validated注解,參數就加上你需要根據那種規則來校驗。

@ApiOperation(value = '登錄以后返回token') @PostMapping(value = '/login') public Result login(@RequestBody @Validated(LoginModel.class) LoginVo loginVo) { String token = userService.login(loginVo.getUserName(), loginVo.getPassword()); return Result.success(token); }

運行后只能在控制臺顯示錯誤的結果,新的問題又來了怎么把錯誤的結果通過自己的result類返回給前端。這就需要對錯誤全局捕捉了。

6、寫一個對Response換回結果的處理。

@RestControllerAdvice@Slf4jpublic class ParameterCalibration { @ExceptionHandler({MethodArgumentNotValidException.class, BindException.class}) @ResponseStatus(HttpStatus.OK) @ResponseBody public Result handleMethodArgumentNotValidException(Exception exception) { StringBuilder errorInfo = new StringBuilder(); BindingResult bindingResult=null; if(exception instanceof MethodArgumentNotValidException){ bindingResult= ((MethodArgumentNotValidException)exception).getBindingResult(); } if(exception instanceof BindException){ bindingResult= ((BindException)exception).getBindingResult(); } for(int i = 0; i < bindingResult.getFieldErrors().size(); i++){ if(i > 0){errorInfo.append(','); } FieldError fieldError = bindingResult.getFieldErrors().get(i); errorInfo.append(fieldError.getField()).append(' :').append(fieldError.getDefaultMessage()); } log.error(errorInfo.toString()); //這里返回自己的Result的結果類。 return Result.validateFailed(errorInfo.toString()); } @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public Result handleDefaultException(Exception exception) { log.error(exception.toString()); //這里返回自己的Result的結果類。 return Result.validateFailed('服務器錯誤',exception); }}

``

7. 先測試LoginModel的校驗規則

控制臺打印的數據

SpringBoot @Validated注解實現參數分組校驗的方法實例

前端收到的數據

SpringBoot @Validated注解實現參數分組校驗的方法實例

切換成SaveModel控制臺打印的數據

SpringBoot @Validated注解實現參數分組校驗的方法實例

切換成SaveModel前端收到的數據

SpringBoot @Validated注解實現參數分組校驗的方法實例

可以看到兩次的驗證規則時不同的,完成了簡易的分組操作。

8 、總結,就是在添加驗證規則的時候指定對應的分組,在使用時傳入需要的分組。可能理解有誤,發現請指導。

總結

到此這篇關于SpringBoot @Validated注解實現參數分組校驗的文章就介紹到這了,更多相關SpringBoot @Validated注解實現參數分組校驗內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 陶氏道康宁消泡剂_瓦克消泡剂_蓝星_海明斯德谦_广百进口消泡剂 | PVC快速门-硬质快速门-洁净室快速门品牌厂家-苏州西朗门业 | 泰安塞纳春天装饰公司【网站】| 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 辐射仪|辐射检测仪|辐射巡测仪|个人剂量报警仪|表面污染检测仪|辐射报警仪|辐射防护网 | 空冷器|空气冷却器|空水冷却器-无锡赛迪森机械有限公司[官网] | 广州中央空调回收,二手中央空调回收,旧空调回收,制冷设备回收,冷气机组回收公司-广州益夫制冷设备回收公司 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 禹城彩钢厂_钢结构板房_彩钢复合板-禹城泰瑞彩钢复合板加工厂 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 | 电车线(用于供电给电车的输电线路)-百科| 螺纹三通快插接头-弯通快插接头-宁波舜驰气动科技有限公司 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 油液红外光谱仪-油液监测系统-燃油嗅探仪-上海冉超光电科技有限公司 | 除甲醛公司-甲醛检测-广西雅居环境科技有限公司| 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 食品质构分析仪-氧化诱导分析仪-瞬态法导热系数仪|热冰百科 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 |