我们在之前的项目中实现了报告的生成和提交过程。我们将在本项目中使用标注和反射机制来实现报告校验功能。
在教授布置报告作业时,可能还对报告做了长度的要求。例如,
为了实现上述功能,我们将在本项目中为这些要求分别开发标注,用于校验。学生在生成报告时,可以自行检查。
首先,我们在com.littlewaterdrop.validation包中创建两个新的标注@NotEmpty和@LengthConstraint。@NotEmpty用于检查字段是否为空。当字符串对象为null或者长度为0时,则违反了@NotEmpty的检查条件。@LengthConstraint标注包含两个成员变量min和max。这两个字段都是可选的。min的默认值为0;max的默认值为50。当字段为字符串,且短于min的值或者长于max的值时,该字段违反了@LengthConstraint的检查条件。
public @interface NotEmpty {
}
public @interface LengthConstraint {
int min() default 10;
int max() default 50;
}
我们在ReportGeneratorBuilder的方法中使用上述两个标注来检查输入的title、name、introduction和pointOfView。根据上述的要求,我们将
我们在com.littlewaterdrop.validation包中创建一个新类ConstraintValidator。它有一个静态方法validate(),接收一个输入参数obj,类型为Object。validator()方法根据参数对象上的标注信息来验证对象的值。如果对象没有使用任何用于验证的标注信息的话,直接返回true。如果对象满足校验,则返回true。否则返回false。
public class ConstraintValidator {
public static boolean validate(Object obj);
}