После многих попыток проверить два или более bean-компонентов с помощью JSR303, пришли к этому решению.
public class BeanOne {
@Valid
private BeanTwo beanTwo;
// other beans to validate
@Valid
private BeanN beanN;
@Min(1)
private Integer idBeanOne;
@NotBlank
private String nameBeanOne;
@NotNull
@Min(1)
private Integer idOther;
// ... Getters and Setters
}
public class BeanTwo {
@Min(1)
private Integer idBeanTwo;
@NotBlank
private String nameBeanTwo;
@NotNull
@Min(1)
private Integer idOtherTwo;
// ... Getters and Setters
}
// Контроллер Spring
@Controller
public class XController {
@Autowired
private Validator validator;
@RequestMapping(value = "/name.html", method = RequestMethod.POST)
public @ResponseBody Map<String, Object>
submitInsert(BeanOne beanOne, BeanTwo beanTwo, BindingResult result) {
beanOne.setBeanTwo(beanTwo);
// beanOne.setBeabN(beanN);
validator.validate(beanOne, result);
if (result.hasErrors()) {
// Errores
} else {
// :D
}
}
// more code ...
}
Но теперь у меня есть другоепроблема: (
У меня есть этот файл Messages.properties
typeMismatch.java.lang.Integer = Must specify an integer value.
typeMismatch.java.lang.Long = Must specify an integer value.
typeMismatch.java.lang.Float = Must specify a decimal value.
typeMismatch.java.lang.Double=Must specify a decimal value.
Этот файл помогает мне перехватывать исключения, когда поле ожидает число, а пользователь вводит текст
Это прекрасно работает для первого компонента (BeanOne), но не для вложенных компонентов (BeanTwo, BeanN)
Надеюсь, они могут мне помочь: D
спасибо