java自定义注解原_Java自定义注解使用

需求:判断用户实体上面的password是否为空,如果不为空,数据库是否存在,如果存在则不让用户提交数据

1,创建自定义注解类

import com.tuogo.sephora.rb.system.validate.impl.OldPasswordConstraintValidator;

import javax.validation.Constraint;

import javax.validation.Payload;

import java.lang.annotation.*;

@Documented

@Target({ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

@Constraint(validatedBy = {OldPasswordConstraintValidator.class})

public @interface SecUserOldPasswordValidity {

String message() default "{com.mycompany.constraints.checkcase}";

String value() default "";

Class>[] groups() default {};

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

}

2,创建注解验证类

/** 判断旧密码是否正确 实时验证

* @author zgx

*/

public class OldPasswordConstraintValidator implements ConstraintValidator {

private String validOldPassword;

public OldPasswordConstraintValidator() {

}

/**

* 可以在验证开始前调用注解里的方法,从而获取到一些注解里的参数

*

* @param secUserOldPasswordValidity

*/

@Override

public void initialize(SecUserOldPasswordValidity secUserOldPasswordValidity) {

this.validOldPassword = secUserOldPasswordValidity.value();

}

/**

* 真正的校验逻辑

*

* @param oldPwd

* @param constraintValidatorContext

* @return

*/

@Override

public boolean isValid(String oldPwd, ConstraintValidatorContext constraintValidatorContext) {

// 当前前端传过来的请求参数是空串,或者没传的时候,不进行后续正则校验

if ("".equals(oldPwd) || oldPwd == null) {

return true;

} else {

boolean pwdIfValidity = SpringContextUtils.getBean(SecUserPwdAndEmailIsValidity.class).isSecUserPwdIfValidity(oldPwd);

return pwdIfValidity;

}

}

}

这里使用 isSecUserPwdIfValidity()方法判断当前输入的旧密码与新密码是否正确

第三步,实体上使用注解

国际化信息为

profile.secuser.old.empty=Old Password is required

oldPwd.msg.error=The old password is different from the original one

最后进行效验:

如果什么都不输入,点击保存

如果输入的密码与数据库不匹配,点击save则

下面是hibernate_validator参考手册(英文版)

链接:https://pan.baidu.com/s/1fAviG076Iw28nW7k-iuhmA 提取码:kovy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值