嗨,我正在使用 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 表单错误标签来显示错误()。但我无法看到这些错误。
谁可以帮我这个事。有什么我错过的吗...?
注意:我的控制器和我的验证类都是不同的。
任何人都可以指出我正确的道路。
坦克·阿马尔