分组校验及自定义校验

本文介绍了Java中的分组校验技术,包括定义分组、默认分组和继承关系,以及自定义State注解进行状态验证的方法。同时,对StringBuffer类的构造方法、动态字符串操作功能进行了详细阐述。
摘要由CSDN通过智能技术生成

一、分组校验

步骤:

1.定义分组

2.定义校验项时指定归属的分组

3.校验时指定要校验的分组

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


1.如果说某个校验项没有指定分组,默认属于Default分组

2.分组之间可以继承,A extends B 那么A中拥有B中所有的校验项

public interface Add extends Default {

}
public interface Update extends Default{

}

总结:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、自定义校验

步骤:

1.自定义注解State

@Documented
@Constraint(
        validatedBy = {}
)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
public @interface State {
    //提供校验失败后的提示信息
    String message() default "state参数的值只能是已发布或者草稿";
    //指定分组
    Class<?>[] groups() default {};
    //负载 获取到state注解的附加信息
    Class<? extends Payload>[] payload() default {};
}

2.自定义校验数据的类StateValiidation

public class StateValidation implements ConstraintValidator<State, String> {
    /**
     *
     * @param value 将来要校验的数据
     * @param constraintValidatorContext
     * @return 如果返回false,则校验不通过,返回ture,则校验通过
     */
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
        //提供校验规则
        if(value == null){
            return false;
        }
        if(value.equals("已发布") || value.equals("草稿")){
            return true;
        }
        return false;
    }
}

3.在需要校验的地方使用自定义注解

@State

总结:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

三、java字符串StringBuffer类知识反刍

StringBuffer类是Java中用于处理可变字符串的类。它是一个可变的、线程安全的字符串缓冲区,可以进行动态的字符串操作。以下是StringBuffer类相关知识点:

  1. 构造方法:StringBuffer类提供了多种构造方法,包括无参数的构造方法(创建一个长度为16的缓冲区),以及接受一个整数参数的构造方法(创建一个指定大小的缓冲区)。此外,还有一个接受字符串参数的构造方法,它会创建一个缓冲区,其容量是字符串长度加16。
  2. append方法:此方法可以将各种类型的Java数据(如整数、浮点数、布尔值等)转化为字符串后追加到StringBuffer对象中。
  3. insert方法:可以在指定的位置插入字符串或数据。
  4. delete方法:可以删除指定位置范围内的字符。
  5. replace方法:可以用指定的字符串替换指定位置范围内的字符。
  6. reverse方法:反转StringBuffer对象中的字符顺序。
    elete方法:可以删除指定位置范围内的字符。
  7. replace方法:可以用指定的字符串替换指定位置范围内的字符。
  8. reverse方法:反转StringBuffer对象中的字符顺序。
  9. toString方法:将StringBuffer对象转换为String对象。
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
@Valid注解和@Validated注解都用于数据校验,但有一些区别。@Valid注解是JSR-303规范的标记型注解,用于标记验证属性和方法返回值,进行级联和递归校验。而@Validated注解是Spring的注解,是JSR-303的一个变种,提供了分组功能,可以根据不同的分组采用不同的验证机制。\[2\] 在使用@Valid或@Validated注解时,可以对实体类进行校验,包括表单校验和RequestBody校验。也可以对普通参数进行校验,包括RequestParam校验和PathVariable校验。此外,还可以进行分组校验、嵌套校验、集合校验自定义校验规则等。\[3\] 因此,@Valid校验的是实体类的属性和方法返回值,可以进行级联和递归校验。而@Validated校验的是入参,可以根据不同的分组采用不同的验证机制。 #### 引用[.reference_title] - *1* *3* [Validated数据校验,看这一篇就够了](https://blog.csdn.net/weixin_43990804/article/details/112974137)[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^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [@Validated和@Valid校验参数](https://blog.csdn.net/weixin_45168162/article/details/126781351)[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^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值