1

嗨,我正在使用 Spring MVC 和 Hibernate。我有一个控制器和相应的验证器

@SuppressWarnings("unchecked")
protected void validate(Class<?> argClass, Errors argErrors,
        Object argObject) {
    List<Field> calidationFieldsList = AnnotationProcessor
            .getAnnotatedFields(argClass, Validation.class);
    if (Precondition.checkNotEmpty(calidationFieldsList)) {
        for (Field field : calidationFieldsList) {
            try {
                field.setAccessible(true);
                Object result;
                result = field.get(argObject);

                Object instance = getValidatorInstance(argClass, field);
                if (Precondition.checkNotNull(instance)
                        && Precondition.checkNotNull(result)) {
                    com.rise.validation.Validation<String, String> validation = (com.rise.validation.Validation<String, String>) instance;
                    boolean valid = validation.validate(result.toString());
                    if (!valid) {
                        argErrors.rejectValue(field.getName(),
                                field.getName() + " Validation Failed");
                    }
                }
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

上面的代码验证了我的所有字段。下面是我的控制器代码

@RequestMapping(value = HibernateConstants.SAVE, method = RequestMethod.POST)
public String save(Model argModel, @Valid Person argPerson,
        org.springframework.validation.BindingResult argBindingResult) {
    if (logger.isTraceEnabled()) {
        logger.trace("################################# Entered into PersonController Save Method: #################################");
    }
    if (argBindingResult.hasErrors()) {
        return HibernateConstants.VIEW_SLASH + getSimpleName()
                + HibernateConstants.PERSON;
    }
    Person person = (Person) this.getBaseService().save(argPerson);
    argModel.addAttribute(getSimpleName(), person);
    return HibernateConstants.VIEW_SLASH + getSimpleName()
            + HibernateConstants.VIEW;
}

在这里,如果 BindingResult 有任何错误,我将转发到该页面,因为我正在使用 spring 表单错误标签来显示错误()。但我无法看到这些错误。

谁可以帮我这个事。有什么我错过的吗...?

注意:我的控制器和我的验证类都是不同的。

任何人都可以指出我正确的道路。

坦克·阿马尔

4

0 回答 0