首页 > 解决方案 > Spring Validator 将日期与数据库中的另一个日期进行比较

问题描述

我想编写一个验证器,它将检查用户是否足够大,可以成为另一个用户的父母。因此,例如,我有这段代码,我可以在其中获取表单信息并检查错误:

    @RequestMapping(value = "/setParent", method = RequestMethod.POST)
    public ModelAndView setParent(@Valid @ModelAttribute("person") Person parent, BindingResult bindingResult,
        HttpServletRequest request) {
    logger.info("set parent controller");
    if (bindingResult.hasErrors()) {
        return new ModelAndView("index", "parent", parent);
    } else {
        String personName = request.getParameter("personName");
        String relation = request.getParameter("relation");
        Person person = new Person(personName, null);
        int pID = databaseModel.getPersonID(person);
        int parentID = databaseModel.getPersonID(parent);
        int rID = databaseModel.getRelationID(relation);
        databaseModel.insertRelation(pID, parentID, rID);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("setParentSuccess");
        modelAndView.addObject("parent", databaseModel.getPersonTree(parentID));
        return modelAndView;
    }

}

我已经开始编写自定义验证器:

    @Documented
    @Retention(value = RetentionPolicy.RUNTIME)
    @Constraint(validatedBy = CheckOlderThanValidator.class)
    @Target({ ElementType.FIELD })
    public @interface OlderThan {
    String message() default "my custom validator";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

}


    public class CheckOlderThanValidator implements ConstraintValidator<OlderThan, Date> {

    @Autowired
    private DatabaseModel model;

    @Override
    public boolean isValid(Date date, ConstraintValidatorContext arg1) {
            return false;   
    }

}

但后来意识到我无法获得与该验证器进行比较的第二个用户日期。它是如何完成的?谢谢

标签: javavalidationspring-mvchibernate-validator

解决方案


推荐阅读