自己做视频网站收益怎么来,wordpress 模版教程,如何把wordpress头部去掉,做网站月薪Java SpringBoot 通过javax.validation.constraints下的注解#xff0c;实现入参数据自动验证 如果碰到 NotEmpty 否则不生效#xff0c;注意看下 RequestBody 前面是否加上了Valid
Validation常用注解汇总
Constraint详细信息Null被注释的元素必须为 nullNotNull被注释的元… Java SpringBoot 通过javax.validation.constraints下的注解实现入参数据自动验证 如果碰到 NotEmpty 否则不生效注意看下 RequestBody 前面是否加上了Valid
Validation常用注解汇总
Constraint详细信息Null被注释的元素必须为 nullNotNull被注释的元素必须不为 nullNotBlank被注释的元素不能为空空格视为空NotEmpty被注释的元素不能为空 (允许有空格)Size(max, min)被注释的元素的大小必须在指定的范围内Min(value)被注释的元素必须是一个数字其值必须大于等于指定的最小值Max(value)被注释的元素必须是一个数字其值必须小于等于指定的最大值Pattern(value)被注释的元素必须符合指定的正则表达式DecimalMin(value)被注释的元素必须是一个数字其值必须大于等于指定的最小值DecimalMax(value)被注释的元素必须是一个数字其值必须小于等于指定的最大值AssertTrue被注释的元素必须为 trueAssertFalse被注释的元素必须为 falseDigits (integer, fraction)被注释的元素必须是一个数字其值必须在可接受的范围内Past被注释的元素必须是一个过去的日期Future被注释的元素必须是一个将来的日期
示例 /*** 用户名*/NotBlank(message 用户名不能为空)private String username;/*** 用户真实姓名*/NotBlank(message 用户真实姓名不能为空)private String name;/*** 密码*/Pattern(regexp ^(?:(?.*[A-Z])(?.*[a-z])(?.*[0-9])(?.*[^A-Za-z0-9]))(?^[^\\u4e00-\\u9fa5]{0,}$).{8,20}$, message 密码过于简单有被盗风险请保证密码大于8位并且由大小写字母、数字特殊符号组成) private String password;/*** 邮箱*/NotBlank(message 邮箱不能为空)Email(message 邮箱格式不正确)private String email;/*** 手机号*/NotBlank(message 手机号不能为空)Pattern(regexp ^(1[0-9])\\d{9}$, message 手机号格式不正确)private String mobile;
Demo
入参对象上添加注解及说明
package com.vipsoft.web.entity;import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;/*** 定时任务调度*/
public class QuartzJob implements Serializable {private static final long serialVersionUID 1L;/*** 任务序号*/private long jobId;/*** 任务名称*/NotBlank(message 任务名称不能为空)Size(max 10, message 任务名称不能超过10个字符)private String jobName;/*** 任务组名*/NotBlank(message 任务组名不能为空)Size(max 10, message 任务组名不能超过10个字符)private String jobGroup;/*** 调用目标字符串*/private String invokeTarget;/*** 执行表达式*/private String cronExpression;/*** cron计划策略 0默认,1立即触发执行,2触发一次执行,3不触发立即执行*/private String misfirePolicy 0;/*** 并发执行 0允许,1禁止*/private String concurrent;/*** 任务状态0正常 1暂停*/private String status;/*** 备注*/private String remark;
}Controller RequestBody 前面必须加上 Valid 否则不生效
import javax.validation.Valid;RestController
RequestMapping(schedule)
public class ScheduleController {private Logger logger LoggerFactory.getLogger(ScheduleController.class);RequestMapping(/add)public ApiResult addTask(Valid RequestBody QuartzJob param) throws Exception {logger.info(添加调度任务 {} , JSONUtil.toJsonStr(param));return new ApiResult(添加成功);}
}异常处理统一返回对象方便前端解析 GlobalExceptionHandler
package com.vipsoft.web.exception;import cn.hutool.core.util.StrUtil;
import com.vipsoft.web.utils.ApiResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import java.util.List;/*** 全局异常处理器*/
RestControllerAdvice
public class GlobalExceptionHandler {private static final Logger logger LoggerFactory.getLogger(GlobalExceptionHandler.class);/*** 处理自定义异常*/ExceptionHandler(CustomException.class)public ApiResult handleException(CustomException e) {// 打印异常信息logger.error(### 异常信息:{} ###, e.getMessage());return new ApiResult(e.getCode(), e.getMessage());}/*** 参数错误异常*/ExceptionHandler({MethodArgumentNotValidException.class, BindException.class})public ApiResult handleException(Exception e) {if (e instanceof MethodArgumentNotValidException) {MethodArgumentNotValidException validException (MethodArgumentNotValidException) e;BindingResult result validException.getBindingResult();StringBuffer errorMsg new StringBuffer();if (result.hasErrors()) {ListObjectError errors result.getAllErrors();errors.forEach(p - {FieldError fieldError (FieldError) p;errorMsg.append(fieldError.getDefaultMessage()).append(,);logger.error(### 请求参数错误{ fieldError.getObjectName() },field{ fieldError.getField() },errorMessage{ fieldError.getDefaultMessage() });});return new ApiResult(6001, errorMsg.toString());}} else if (e instanceof BindException) {BindException bindException (BindException) e;if (bindException.hasErrors()) {logger.error(### 请求参数错误: {}, bindException.getAllErrors());}}return new ApiResult(6001, 参数无效);}/*** 处理HttpRequestMethodNotSupporte异常* param e* return*/ExceptionHandler(HttpRequestMethodNotSupportedException.class)public Object methodHandler(HttpRequestMethodNotSupportedException e) {// 打印异常信息logger.error(### 异常信息:{} ###, e.getMessage());return new ApiResult(6000, e.getMessage());}/*** 处理所有不可知的异常*/ExceptionHandler(Exception.class)public ApiResult handleOtherException(Exception e) {// 打印异常信息logger.error(### 系统内部错误:{} ###, e.getMessage(), e);String warnMsg StrUtil.isEmpty(e.getMessage()) ? ### 系统内部错误 ### : e.getMessage();return new ApiResult(6000, 系统内部错误, e.getMessage());}}
统一返回对像 ApiResult
package com.vipsoft.web.utils;//import com.github.pagehelper.PageInfo;import java.io.Serializable;public class ApiResult implements Serializable {/*** 返回编码 0:失败、1成功*/private int code;/*** 返回消息*/private String message;/*** 返回对象*/private Object data;/*** 分页对象*/private Page page;public ApiResult() {this.code 1;this.message 请求成功;}public ApiResult(Integer code, String message) {this.code code;this.message message;}public ApiResult(Integer code, String message, Object data) {this.code code;this.message message;this.setData(data);}public ApiResult(Object data) {this.code 1;this.message 请求成功;this.setData(data);}// public ApiResult(PageInfo pageInfo) {
// this.code 1;
// this.message 请求成功;
// this.setData(pageInfo.getList());
// this.setPage(convertToPage(pageInfo));
// }
//
// public Page convertToPage(PageInfo pageInfo) {
// Page result new Page();
// result.setTotalCount(pageInfo.getTotal());
// result.setPageNum(pageInfo.getPageNum());
// result.setPageCount(pageInfo.getPages());
// result.setPageSize(pageInfo.getPageSize());
// result.setPrePage(pageInfo.getPrePage());
// result.setNextPage(pageInfo.getNextPage());
// return result;
// }public int getCode() {return code;}public void setCode(int code) {this.code code;}public String getMessage() {return message;}public void setMessage(String message) {this.message message;}public Object getData() {return data;}public void setData(Object data) {this.data data;}public Page getPage() {return page;}public void setPage(Page page) {this.page page;}
}
运行结果如下