У меня есть одна форма, для которой есть три Pojo, потому что есть три отдельные таблицы по одной для каждого Pojo. Два поля в форме предварительно заполнены. Теперь я хочу проверить форму с помощью пружинного валидатора. Я попытался использовать абстрактный класс с общими полями всех трех Pojo и каждого Pojo, расширяющего его, но Spring не смог создать Object для абстрактного класса и вывел исключение. Я предпочитаю не использовать интерфейс, так как мне нужно инициализировать все поля.
Ниже приведен код ссылки.
Контроллер
@RequestMapping(value="/save",method=RequestMethod.POST)
public String saveData(@ModelAttribute("commonForm")@Valid Foo foo,FooBar fooBar,Test test,BindingResult result){
this.testValidator.validate(foo, result); //which Pojo to provide here
if(result.hasErrors()){
return "redirect:/regPage";
}else{
return "success";
}
}
Validator
public class TestValidator implements Validator{
@Override
public boolean supports(Class<?> clazz) {
return Foo.class.equals(clazz)|| FooBar.class.equals(clazz)|| Test.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
if(target instanceof Foo){
//validate Foo...
}else if(target instanceof FooBar){
//validate FooBar...
}else{
//validate Test...
}
}
}
Кроме того, последний тест Pojo, т.е. тест , похоже, перекрывает два других с сообщением об ошибке.