org.apache.jasper.jasperexception:java.lang.illegalargumentexception:无法解析参数number:lower

qxsslcnc  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(240)

我正在尝试实现自定义注解概念。我已经创建了一个注解“@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}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题