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

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

如何驗證字符串集合和每個元素作為 URL?

如何驗證字符串集合和每個元素作為 URL?

MMTTMM 2022-11-02 15:14:02
我想驗證Collection<String>. 每個元素都是一個 URL,我在表單中作為字符串獲取。@Valid@URL@ElementCollection public Collection<String> getPictures() {           return this.pictures;   }public void setPictures(final Collection<String> pictures) {               this.pictures = pictures;     }我想知道 Spring 中是否有一些注釋可以讓我驗證這個集合中的所有字符串,比如 URL
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

沒有直接驗證該字段的注釋。自定義注釋的想法@URL是完全有效的,但您必須自己實現驗證 - 注釋只是“應該發生的事情”的標記。

我建議你重命名@URL@URLCollection以避免與類沖突java.net.URL。從定義注釋開始。不要忘記注解@Constraint(查看其文檔以了解如何正確定義自定義驗證注解):

@Target({ElementType.METHOD, ElementType.FIELD})

@Retention(RetentionPolicy.RUNTIME)

@Constraint(validatedBy = UrlCollectionValidator.class)     // will be created below

public @interface URLCollection {

    String message() default "default error message";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

}

然后繼續執行ConstraintValidator:


public class UrlCollectionValidator implements ConstraintValidator<URLCollection, Collection<String>> {


    @Override

    public void initialize(URLCollectionconstraint) { }


    @Override

    public boolean isValid(Collection<String> urls, ConstraintValidatorContext context) {

        return // the validation logics

    }

}

嗯,就是這樣。在 Spring 文檔中的配置自定義約束中閱讀有關此內容的更多信息:


每個 bean 驗證約束由兩部分組成: *@Constraint聲明約束及其可配置屬性的注釋。* 實現javax.validation.ConstraintValidator約束行為的接口的實現。


查看完整回答
反對 回復 2022-11-02
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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