前端传数据到后端,后端需要对数据进行必要的数据校验,本人使用SpringBoot的validation
pom文件引入包

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

再类上增加校验规则

public class TicketVspRequestBean extends BaseRequestBean{/*** 编号。*/@NotEmpty(groups ={AskAgainVspTicket.class,ChangeVspTicket.class},message = "唯一编号不能为空")@Length(groups =CreateVspTicket.class,max= 36)private String code;/*** 类型。*/@NotEmpty(groups = CreateVspTicket.class,message = "类型不能为空")@Size(groups =CreateVspTicket.class,max = 50)private String type;public interface CreateVspTicket{}public interface AskAgainVspTicket{}public interface ChangeVspTicket{}
}

groups 表示分组在使用的时候可以标识用那个分组的校验规则
使用

    @PostMapping("/create")public void findByConditionAndPage(@Validated(TicketVspRequestBean.CreateVspTicket.class) @RequestBody final TicketVspRequestBean requestBean) {}

以上即完成对入参的校验,根据标识来校验不同类型的数据。

@Validated与@Valid的不同点

@Valid注解与@Validated注解功能大部分类似;两者的不同主要在于:@Valid属于javax下的,而@Validated属于spring下;@Valid支持嵌套校验、而@Validated不支持,@Validated支持分组,而@Valid不支持。笔者这里只简单介绍@Validated的使用时机

对校验失败的响应处理

@ControllerAdvice
@Slf4j
public class ExceptionHandlerConfig {/*** 校验错误拦截处理** @param exception 错误信息集合* @return 错误信息*/@ExceptionHandler(MethodArgumentNotValidException.class)@ResponseBodypublic HttpResult<String> validationBodyException(MethodArgumentNotValidException exception) {//对校验错误信息进行封装,并输出到日志BindingResult result = exception.getBindingResult();StringBuilder errorMessage = new StringBuilder();if (result.hasErrors()) {List<ObjectError> errors = result.getAllErrors();errors.forEach(p -> {FieldError fieldError = (FieldError) p;log.error("数据校验错误 : object{" + fieldError.getObjectName() + "},field{" + fieldError.getField() +"},errorMessage{" + fieldError.getDefaultMessage() + "}");errorMessage.append(fieldError.getDefaultMessage());});}log.info("验证字段{}",errorMessage.toString());return DefaultHttpResultFactory.fail(errorMessage.toString(),null);}
}

总结常用的有

java后端传参数据校验相关推荐

  1. Java中传参数--值传递和引用传递

    ** Java中传参数–值传递和引用传递 ** 在Java中,传参数分为值传递和引用传递. 在Java中的数据类型分为两大类:一类是引用类型,也叫类类型(除了String以外的所有复合数据类型,包括数 ...

  2. spring多参java注解_spring参数注解校验

    在写一些controller协议的时候,有些时候从前端传过来的参数较多,好的办法是定义一个实体类来封装请求参数,但是用实体类封装参数后,无法对参数值进行校验,可以使用spring的@Validated ...

  3. java后端传object给js_【JSON】JSON在前端和后端传递

    前后台最最传统的交互方式就是表单交互,然后用request.setAttribute方法设置结果,渲染jsp,然而随着前台界面的复杂程度的提高,或者是使用了某些前端框架(sigmagrid)越来越多的 ...

  4. java httpget 传参数_Java 发送http请求(get、post)

    1.情景展示 java发送get请求.post请求(form表单.json数据)至另一服务器: 可设置HTTP请求头部信息,可以接收服务器返回cookie信息,可以上传文件等: 2.代码实现 所需ja ...

  5. shell脚本触发java程序传参数

    eods.sh nohup java -cp "./xxx.war/WEB-INF/lib/*:./xxx.war/WEB-INF/classes" com.gblfy.datat ...

  6. Java后端传图片字节流到Vue前端显示

    Java将本地图片转字节流byte[]数组 service @Overridepublic byte[] image2bytes(String imgSrc) throws Exception {Fi ...

  7. kettle java交互_java程序中给Kettle传参数,其实很简单

    前段时间让同事研究下kettle如何通过java方法传参数,回答说资料太少搞不定,心理不爽,今天上网搜了搜果然文章鱼龙混杂,最终发现,其实步骤很简单,标红的地方就是要注意的地方.代码例子是调用job的 ...

  8. 解决“微信小程序http请求参数为空时,传到java后端变成了undefined”问题

    遇到问题: 最近在对接微信小程序和java后端springboot框架的接口,然后发现一个问题,当微信小程序发起http请求时,如果请求参数的值为空,传到java后端时就变成了undefined,这样 ...

  9. 实现Java后端数据校验

    每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理.统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与jQuery Va ...

最新文章

  1. eclipse.ini内存设置(转)
  2. 十款让 Web 前端开发人员更轻松的实用工具
  3. 计算机网络原理和应用,计算机网络原理与应用
  4. Docker(2):使用Dockerfile创建支持SSH服务的镜像
  5. Java黑皮书课后题第2章:2.11(人口统计)重写编程练习题1.11,提示用户输入年数,然后显示这个年数之后的人口值,将1.11中的提示用于这个程序
  6. 前端学习(2354):image组件的基本使用
  7. 解决mysql表被crash的一次维护始末
  8. java 格式化 布尔型_这么久才知道Java中的format很强大!
  9. 《LoadRunner 没有告诉你的》之四——理解性能
  10. [转]Bootstrap table后端分页(ssm版)
  11. collection集合 网_房地产信托业务(集合)2020年1-9月分析报告
  12. JavaScript学习(五十八)—作用域链
  13. 寒假作业3(传说中的写软件)
  14. CentOS7 安装Redis 单机版
  15. 【UML】——为什么要使用UML
  16. c# oracle 中文列名,sql中中文列名
  17. 机器学习的数学基础(3):正交性原理(orthogonality principle)
  18. mysql 查询距离某天最近的一条记录
  19. brctl配置linux bridge及虚拟bridge实现
  20. 摄影师用AI预测MJ、李小龙活到现在长什么样,网友看后泪目

热门文章

  1. 大唐杯 5G工程实践 (35:00-45:00)任务三 任务五(15%)
  2. Qt用户自定义布局的数据看板实现
  3. 「企业管理」精诚CRM+——一体化管理企业业务流程
  4. Android build.prop详细优化
  5. 计算机初中教师资格教案,教师资格初中信息技术《设置超链接》教案
  6. catf1ag web题目 WriteUp(wp)
  7. windows_server2016中安装主板驱动,蓝屏重启
  8. 数据仓库灵魂30问之数仓有哪几种建模思想?
  9. 维基解秘的兄弟网站Cryptome.org
  10. 智能客服系列3 seq2seq+attention【Python十分钟写出聊天机器人】基于Keras实现seq2seq模型