javax.validation参数校验

在实体字段加注解:

/**
     * 机构名称
     */
    @ApiParam(name = "orgName", value = "机构名称")
    @Size(max = 40,message = "机构名称长度不能超过40!") @FieldName(desc = "机构名称") private String orgName;

说明:@Size是javax.validation中的注解。还有其他注解可参考javax.validation的所有注解。

注意:

1.字段有值校验;没值不校验。当我们只校验一个实体的一部分字段,只要保证另一部分字段值为空就可以了。

2.@Valid校验;工具类校验。

代码:

1.@Valid校验作用在方法头上

@RequestMapping(value = "/saveInsuredForDomestic",method = RequestMethod.POST)
    @ApiOperation(value = "保存被保险人(国内)", httpMethod = "POST", response = BaseResponse.class,notes = "保存被保险人")
    @ResponseBody
    public BaseResponse saveInsuredForDomestic(HttpServletRequest request,@ApiParam(name = "被保险人") @ModelAttribute("insuredDomesticParam") @Valid InsuredDomesticParam insuredDomesticParam){
...
}

这种方式校验在进入方法之前就对实体中的字段进行了校验。

2.手动校验:

// 参数类型校验
        List<String> validateError = VlidationUtil.validate(prodEverydayTaskPO);
        if(validateError != null && validateError.size() > 0){ return Pair.of(false,validateError.get(0)); }

工具类VlidationUtil:

package com.product.util;

import java.util.ArrayList;
import java.util.List; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; import javax.xml.bind.ValidationException; /** * 校验工具类 * VlidationUtil * @author: liuyachao * 2018/6/6 11:11 */ public class VlidationUtil { private static Validator validator; static { ValidatorFactory vf = Validation.buildDefaultValidatorFactory(); validator = vf.getValidator(); } /** * javax.validation注解校验 * @throws ValidationException * @throws ValidationException * @Description: 校验方法 * @param t 将要校验的对象 * @throws ValidationException * void * @throws */ public static <T> List<String> validate(T t){ Set<ConstraintViolation<T>> set = validator.validate(t); List<String> validateError = new ArrayList<>(); if(set.size()>0){ for(ConstraintViolation<T> val : set){ validateError.add(val.getMessage()); } } return validateError; } /** * 是否正整数 * @param str * @return */ public static boolean isPositiveInteger(String str){ boolean flag=false; try{ String regex="^[1-9]+[0-9]*$"; Pattern p=Pattern.compile(regex); Matcher m=p.matcher(str); if(m.find()){ return true; } }catch(Exception e){ e.printStackTrace(); } return flag; } }

此种方式校验可在代码里面任何地方进行校验。相对于@Valid比较灵活。

 

转载于:https://www.cnblogs.com/super-chao/p/9182750.html

javax.validation.constraints.NotEmpty是一个用于验证字段不为空的约束注解。它可以应用于String、Collection、Map和数组等类型的字段上。被@NotEmpty注解修饰的字段不能为null且不能为空。\[3\]在引用\[2\]的示例,@NotEmpty(message = "ID不能为空")应用于List<String>类型的userIds字段,表示该字段不能为null且不能为空。因此,在创建的类对象,如果userIds字段为null或者为空集合,就会出现"执行报错:No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.Long'. Check configuration for 'id'"的错误提示。\[1\] #### 引用[.reference_title] - *1* [No validator could be found for constraint ‘javax.validation.constraints.NotEmpty‘...报错解决](https://blog.csdn.net/qq_40816795/article/details/127109993)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [validation校验包常用校验注解@NotEmpty,@NotBlank,@NotNull等注解](https://blog.csdn.net/Ying_ph/article/details/125908693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [javax.validation.constraints@NotEmpty,@NotNull,@NotBlank的区别](https://blog.csdn.net/m0_51176516/article/details/117456403)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值