W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
寫代碼前先了解一個(gè)新的注解@Validator
,它的作用是聲明一個(gè)類為驗(yàn)證器,它的參數(shù)需要綁定自定義驗(yàn)證器對(duì)應(yīng)的注解,這個(gè)注解的作用與@VRequried
等注解是一樣的,開發(fā)人員可以通過該注解配置驗(yàn)證規(guī)則;
本例中,我們創(chuàng)建一個(gè)簡(jiǎn)單的自定義驗(yàn)證器,用來驗(yàn)證當(dāng)前用戶輸入的郵箱地址是否已存在;
創(chuàng)建自定義驗(yàn)證器注解:
@Target({ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface VEmailCanUse { /** * @return 自定義驗(yàn)證消息 */ String msg() default ""; }
實(shí)現(xiàn)IValidator接口并聲明@Validator注解:
@Validator(VEmailCanUse.class) public class EmailCanUseValidator implements IValidator { public ValidateResult validate(ValidateContext context) { ValidateResult _result = null; if (context.getParamValue() != null) { // 假定郵箱地址已存在 VEmailCanUse _anno = (VEmailCanUse) context.getAnnotation(); _result = new ValidateResult(context.getParamName(), StringUtils.defaultIfBlank(_anno.msg(), "郵箱地址已存在")); } return _result; } }
測(cè)試代碼:
public class VEmailCanUseBean { @VRequried @VEmail @VEmailCanUse private String email; // // 此處省略了Get/Set方法 // } public static void main(String[] args) throws Exception { YMP.get().init(); try { Map<String, Object> _params = new HashMap<String, Object>(); _params.put("ext.email", "demo@163.com"); Map<String, ValidateResult> _results = Validations.get().validate(VEmailCanUseBean.class, _params); // for (Map.Entry<String, ValidateResult> _entry : _results.entrySet()) { System.out.println(_entry.getKey() + " : " + _entry.getValue().getMsg()); } } finally { YMP.get().destroy(); } }
執(zhí)行結(jié)果:
ext.email : 郵箱地址已存在
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: