こんにちは、Spring MVC と Hibernate を使用しています。私は1つのコントローラと対応するバリデータを持っています
@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 フォームのエラー タグを使用してエラー () を表示しているという点で、そのページに転送します。しかし、私はそれらのエラーを見ることができませんでした。
誰でもこれについて私を助けることができますか?私が見逃したものはありますか...?
注:私のコントローラーと検証クラスはどちらも異なります。
誰でも私を正しい道に導くことができますか?
タンク・アマール