自定义注解标签验证

package com.pt.modules.contract.utils.Customannotations;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;    

import javax.validation.Constraint;
import javax.validation.Payload;    

/**
 *
 * @description  功能描述: 自定义注解身份证号格式校验
 * @author       作        者:
 * @param        参        数:
 * @Createdate   建立日期: 2016年12月28日下午2:34:44
 */
@Constraint(validatedBy = IsNumberFormatValidator.class) //具体的实现
@Target( { java.lang.annotation.ElementType.METHOD,
    java.lang.annotation.ElementType.FIELD })
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Documented
public @interface IsNumberFormat {
    String message() default "{org.hibernate.validator.constraints.NotEmpty.message}";  

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

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

}  
package com.pt.modules.contract.utils.Customannotations;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import com.pt.modules.contract.utils.IdcardValidator;
/**
 *
 * @description  功能描述: 自定义注解身份证号格式校验
 * @param        参         数:
 * @Createdate   建立日期: 2016年12月28日下午2:33:38
 */
public class IsNumberFormatValidator implements ConstraintValidator<IsNumberFormat, String>{
    @Override
    public boolean isValid(String IdNumber, ConstraintValidatorContext constraintValidatorContext) {
        String message=constraintValidatorContext.getDefaultConstraintMessageTemplate();
        if(IdNumber != null){
            IdcardValidator  p = new IdcardValidator();
            boolean fglg =    p.isValidatedAllIdcard(IdNumber);
               if(fglg==true){
                    return true;
                }
        }
        constraintValidatorContext.disableDefaultConstraintViolation();//禁用默认的message的值
        constraintValidatorContext
        .buildConstraintViolationWithTemplate(message+IdNumber).addConstraintViolation();
        return false;
    }

    @Override
    public void initialize(IsNumberFormat constraintAnnotation) {

    }

}
    @IsNumberFormat(message="属性名--lenNumber,出借人身份证号格式不正确--")
    private String lenNumber;
    try {
            BeanValidators.validateWithException(validator, lendInfo);// 报文校验      }catch (ConstraintViolationException e) {
           BeanValidators.extractMessage(e).toString();
        }
时间: 2024-08-10 23:30:17

自定义注解标签验证的相关文章

JAVA自定义注解标签

import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD)//标签贴在何处 @Retention(RetentionPolicy.RUNTIME)//存活于JVM中.可以利用反射来赋

[Java]利用拦截器和自定义注解做登录以及权限验证

1.自定义注解 需要验证登录的注解 package com.etaofinance.wap.common; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.Retention

自定义标签-自定义注解

首先是4个自定义注解类StaticResourceType.java public enum StaticResourceType { LESS,CSS,JS} StaticResource.java @Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface StaticResource { StaticResourceType type(); String path(); Dependenc

SpringMVC验证框架Validation自定义注解实现传递参数到国际化资源文件

关于SpringMVC验证框架Validation的使用方法,不是本篇的重点,可参见博文SpringMVC介绍之Validation 在使用Validation时,一定有朋友遇到过一个问题,那就是:无法传递参数到国际化资源文件properties错误描述中. 举个例子: User类中 @NotEmpty(message="{password.empty.error}") private String password; 资源文件validation_zh_CN.properties中为

JAVA里自定义注解来进行数据验证

API开发中经常会遇到一些对请求数据进行验证的情况,这时候如果使用注解就有两个好处,一是验证逻辑和业务逻辑分离,代码清晰,二是验证逻辑可以轻松复用,只需要在要验证的地方加上注解就可以. Java提供了一些基本的验证注解,比如@NotNull.@Size,但是更多情况下需要自定义验证逻辑,这时候就可以自己实现一个验证注解,方法很简单,仅需要两个东西: 一个自定义的注解,并且指定验证器 一个验证器的实现 自定义验证注解 考虑有一个API,接收一个Student对象,并希望对象里的age域的值是奇数,

SpringMVC拦截器+Spring自定义注解实现权限验证

设计思路 主要针对需要登录后操作的接口进行校验.接入层在对外暴露接口后,网页.APP.第三方等等途径进行访问接口.用户请求首先会被SpringMVC拦截器拦截到,在拦截器里第一步就是需要校验用户的登录身份(由于是分布式系统这里采用的是userId+accessToken方式来校验),登录校验通过之后再进行用户权限校验,此时会自动拦截@AuthValidate注解的method(核心),如果权限校验失败则抛出权限不足异常,否则校验通过之后再执行具体接口并返回结果. 1.自定义注解 1 packag

Java反射与自定义注解

反射,在Java常用框架中屡见不鲜.它存在于java.lang.reflact包中,就我的认识,它可以拿到类的字段和方法,及构造方法,还可以生成对象实例等.对深入的机制我暂时还不了解,本篇文章着重在使用方面,并附上一个本人应用到项目中的案例. 基础姿势 拿到类,反射是以类为基础的基础,首先拿到项目中的类,既可以这样拿 Class<?> clazz = Class.forName(类路径); 也可以这样拿 Class<?> clazz = 类名.getClass(); 在一般意义的J

使用Spring处理自定义注解

使用Spring处理自定义注解 本文只讲思想,不讲代码. 可能的两种方法 spring schema spring aop aspect 参考1 dubbo service 包名:com.alibaba.dubbo.config 参考2 spring mvc 包名:org.springframework.web.servlet.config 可以参考这两个的实现,利用schema添加自定义注解并处理自己的注解,注册搜索模块. 源码分析 通过schema添加配置解析如: 在 spring配置文件中

自定义注解的简单使用

    框架开发时不免会涉及到配置文件,如properties.xml以及txt等格式的文件.这里介绍框架中通过自定义注解的形式简化配置: 根据需求编写自定义注解中的属性(这里以JDBCConfig为例,这是一个注入数据库常用配置的注解类) @Target是java的元注解(即修饰注解的注解),这里的@Target({METHOD,TYPE})指可以修饰方法.描述类.接口(包括注解类型) 或enum声明. @Retention是java中的运行时注解,可以划分为三类   1.RetentionP