W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
寫代碼前先了解一個新的注解@Validator
,它的作用是聲明一個類為驗證器,它的參數需要綁定自定義驗證器對應的注解,這個注解的作用與@VRequried
等注解是一樣的,開發(fā)人員可以通過該注解配置驗證規(guī)則;
本例中,我們創(chuàng)建一個簡單的自定義驗證器,用來驗證當前用戶輸入的郵箱地址是否已存在;
創(chuàng)建自定義驗證器注解:
@Target({ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface VEmailCanUse { /** * @return 自定義驗證消息 */ String msg() default ""; }
實現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; } }
測試代碼:
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í)行結果:
ext.email : 郵箱地址已存在
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: