java框架-oval校验框架总结-String字符校验

这篇博客总结了Java Oval框架中针对字符串的校验规则,包括@AssertURL、@Email、@CheckWith自定义校验、@DateRange、@Future、@Past时间校验、@EqualToField和@NotEqualField字段比较、@HasSubstring子字符串检查、@Length、@MaxLength和@MinLength长度限制,以及@MemberOf和@NotMemberOf数组包含检查。文章指出在使用这些注解时需要注意配合@NotNull处理null值的情况,并给出了错误示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,@NotBlank会验证输入的字符长度包括空格;@NotEmpty只验证是否为空字符串;@NonNull验证值是否为null。

二,@AssertURL会验证连接的有效性,但不会验证是否是null.@Email验证邮箱地址有效性,但不会验证是否为null。以上需要配合@NotNull使用。

三,@CheckWith(value=CheckAge.class,message="age must in (18~65)") 指定校验的对象。如下:

public class CheckAge implements CheckWithCheck.SimpleCheck{

    private static final long serialVersionUID =1L;
    @Override
    public boolean isSatisfied(Object validatedObject, Object value) {
        User user = (User) validatedObject;
        int age = user.getAge();
        if(age <18 || age > 65){
            return false;
        }else {
            return true;
        }
    }
}

四,验证时间@DateRange、@Future、@Past。时间格式只能是yyyy-mm:dd HH:MM:ss;并且不能验证是否为null,需要配合@NotNull使用。(

@DateRange(min="2010-10-01",max="now",message="dateis error.")

private String birthday;

 

五,@EqualToField,@Not EqualToField 必须合某个字段相等/或者不能相等。

@NotNull(message="not null")
@NotBlank(message="userName不能为空")
private String userName;

@NotEqualToField(value="userName",message="can'tequals userName",useGetter=true)
private String userCode;

六,@HasSubstring必须包含某个子字符串。ignoreCase=true是否或略大小写。true/false

@HasSubstring(value="san",ignoreCase=true,message="must contains 'san'")
private String userCode;

七, @Length,@MaxLength,@MinLength空格也算一个字符。

max

最大长度,默认为:Integer.MAX_VALUE

 

min

默认值为0

@Length(max=10,min =5, message="最大长度不能超过10最小为5")
private String userCode;
@MaxLength(value = 5, message="最大长度不能超过5")
private String userCode;
public class Main {
    public static void main(String[] args){
        Validator validator = new Validator();
        User user=new User();
        user.setUserCode("狗蛋     ");
        try {
            VerifyUtil.validateFullObject(user);
        } catch (MerchantServiceException e) {
            Result<Object> objectResult = DealExceptionUtil.doExceptionService(e);
            System.out.println(objectResult.toString());
        }
    }


}

输出结果:Result{success=false, errorCode=PARAMETER_VALID_NOT_PASS, errorMsg=最大长度不能超过5, primaryErrorCode=MERCHANT-CORE+PARAMETER_VALID_NOT_PASS, primaryErrorMsg=最大长度不能超过5, primaryErrorIP=192.168.11.118}

八,@MemberOf、@NotMemberOf参数说明value 字符串数组ignoreCase默认值false

Check if the string representation iscontained in the given string array.

检查值是否包含在给定的数组中;@NotMemberOf实现相反效果;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class User {
   @MemberOf(ignoreCase = false,value ={"d","1","2"} )
   @NotNull
    private String num;
}
public class Main {
    public static void main(String[] args){
        Validator validator = new Validator();
        User user=new User();
        user.setNum("D");
        try {
            VerifyUtil.validateFullObject(user);
        } catch (MerchantServiceException e) {
            Result<Object> objectResult = DealExceptionUtil.doExceptionService(e);
            System.out.println(objectResult.toString());
        }
    }


}

结果:

Result{success=false, errorCode=PARAMETER_VALID_NOT_PASS, errorMsg=com.bestpay.merchant.core.service.impl.moshi.oval.User.num must be one of these values: d,1,2, primaryErrorCode=MERCHANT-CORE+PARAMETER_VALID_NOT_PASS, primaryErrorMsg=com.bestpay.merchant.core.service.impl.moshi.oval.User.num must be one of these values: d,1,2, primaryErrorIP=192.168.11.118}

如有问题请指出!
 

参考于:https://blog.youkuaiyun.com/neweastsun/article/details/49154337

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值