亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring注解方法目的

Spring注解方法目的

FFIVE 2023-04-13 15:03:45
我為 spring 項目編寫了簡單的驗證注釋。問題是我不明白某些方法的目的。這是我的注釋:@Constraint(validatedBy = PostCodeValidator.class)@Target({ElementType.METHOD, ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface PostCode {    public String value() default "LUV";    public String message() default "must start with LUV";    public Class<?>[] groups() default {};    public Class<? extends Payload>[] payload() default {};}誰能解釋我groups()和payload()方法的目的?如果解釋盡可能簡單,我將不勝感激。謝謝。
查看完整描述

1 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

1) 在Bean Validation Api 中,組用于選擇bean 的哪些字段將被驗證。示例:具有地址屬性的用戶。


public class User {

    @NotNull(groups = GroupUser.class)

    String firstname;

    @NotNull(groups = GroupAddress.class)

    String street;

    @NotNull(groups = GroupAddress.class)

    String city;

}

要驗證整個用戶,您可以執行以下操作:


Set<ConstraintViolation<User>> constraintViolations = validator.validate(user, GroupUser.class, GroupAddress.class);

要僅驗證沒有地址部分的用戶信息,您可以使用:


Set<ConstraintViolation<User>> constraintViolations = validator.validate(user, GroupUserName.class);

2) 有效載荷用于管理錯誤的嚴重程度。您可以實現 Payload 接口:


public class Severity {

    public static class Info implements Payload {}

    public static class Error implements Payload {}

}

如果您使用以下方式注釋名字字段:


@NotNull(payload = {Severity.Error.class})

然后在驗證之后,您可以按嚴重性添加一些邏輯:


for (ConstraintViolation<TestBean> violation : constraintViolations) {

    Set<Class<? extends Payload>> payloads = violation.getConstraintDescriptor().getPayload();

    for (Class<? extends Payload> payload : payloads) {

        if (payload == Severity.Error.class) {

            // logic here   

        }

    }

}


查看完整回答
反對 回復 2023-04-13
  • 1 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號