我正在尝试实现自定义注解概念。我已经创建了一个注解“@age”,但是在运行项目时得到了。
型号等级:
package com.manidixit.lc.api;
import com.manidixit.lc.Validator.Age;
public class UserRegistrationDTO {
private String name;
private String username;
private char[] password;
@Age(lower = 18,upper = 60) //this is a custom annotation
private Integer age;
private String countryName;
private String[] hobbies;
private String gender;
private CommunicationDTO communicationDTO;
public String[] getHobbies() {
return hobbies;
}
public void setHobbies(String[] hobbies) {
this.hobbies = hobbies;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public char[] getPassword() {
return password;
}
public void setPassword(char[] password) {
this.password = password;
}
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public CommunicationDTO getCommunicationDTO() {
return communicationDTO;
}
public void setCommunicationDTO(CommunicationDTO communicationDTO) {
this.communicationDTO = communicationDTO;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
自定义注解类
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Constraint(validatedBy = AgeValidator.class)
public @interface Age {
String message() default "{invalidAgeMessage}";
int lower() default 18;
int upper() default 60;
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
在下面的课中,我实现了我的“@age”注解的逻辑
agevalidator.java文件
package com.manidixit.lc.Validator;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class AgeValidator implements ConstraintValidator<Age ,Integer> {
private int lower;
private int upper;
@Override
public void initialize(Age age) {
// I can write Post Construct work here
this.lower=age.lower();
this.upper=age.upper();
}
@Override
public boolean isValid(Integer age, ConstraintValidatorContext context) {
// I need to write my logic here
if(age==null) {
return false;
}
if(age<lower || age>upper) {
return false; //fail
}
return true; // pass
}
}
属性文件 invalidAgeMessage=Age should be between {lower} - {upper}
暂无答案!
目前还没有任何答案,快来回答吧!