在我的申请中,我有一个字段名称'year'仅包含年份(2016,2015 .....)。但是我必须验证这个'年'字段,这个字段应该包含当前年份。
我检查了所有Lombok验证注释,但我没有找到任何注释帮助。我怎样才能做到这一点?
答案 0 :(得分:2)
我认为没有lombok验证约束注释。如果有我不知道。
我假设你的领域是一个整数。所以,我建议你下一个解决方案:
您可以添加一个方法,该方法以下一步开始并添加java验证约束@assertTrue
private int year;
@AssertTrue
public boolean isCurrentYear(){
return LocalDate.now().getYear() == year;
}
创建一个方法来保护你的构造函数,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");
}
实现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");
}
}
}