使用Lombok验证当前年份的年份

时间:2016-08-03 05:34:29

标签: spring-data-jpa bean-validation lombok

在我的申请中,我有一个字段名称'year'仅包含年份(2016,2015 .....)。但是我必须验证这个'年'字段,这个字段应该包含当前年份。

我检查了所有Lombok验证注释,但我没有找到任何注释帮助。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

我认为没有lombok验证约束注释。如果有我不知道。

我假设你的领域是一个整数。所以,我建议你下一个解决方案:

解决方案1 ​​ - java bean验证约束注释

您可以添加一个方法,该方法以下一步开始并添加java验证约束@assertTrue

private int year;

@AssertTrue
public boolean isCurrentYear(){
    return LocalDate.now().getYear() == year;
}

解决方案2 - 以编程方式

创建一个方法来保护你的构造函数,setter或两者都检查年份整数是否是当前年份:

private int year;

//Constructor
public YourClass(int year){
    checkCurrentYear(year);
    this.year = year;
}

//Setter    
public void setYear(int year){
    checkCurrentYear(year);
    this.year= year;
}

public void checkCurrentYear(int year){
    if(!isCurrentYear()) // or (LocalDate.now().getYear() != year)
        throw new IllegalArgumentException("Year must be the current");
}

解决方案3 - 实现Spring Validator

实现spring validator接口并在需要时使用它:

public class YourClass implements Validator {

   public boolean supports(Class clazz) {
      return YourClass.class.equals(clazz);
   }

   public void validate(Object obj, Errors e) {

    YourClass p = (YourClass) obj;
    if (LocalDate.now().getYear() != p.getYear()) {
        e.rejectValue("year", "notcurrentyear");
    } 
   }
}
相关问题