robię obiekt modelu z pewnym JSR-303 weryfikatorów adnotacji:Czy @ Valid sprawdzanie adnotacji pól rekursywnie w Spring MVC?
public class UserInfoBasicModel implements Serializable{
@NotNull(message="cannot be null")
@NotEmpty(message="cannot be empty")
private String name;
//getter and setter
//..ignored..
}
Auto dane wiążące go w kontrolerze:
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(method = RequestMethod.POST, value = "/registry/")
public String registry(HttpServletRequest request,
ModelMap modelMap,
@Valid UserInfoBasicModel userInfoBasicModel,
BindingResult result) {
//...some code here...
}
}
W powyższym scenariuszu, to działa dobrze dla walidacji. Ale kiedy enkapsulacji modelu do innego obiektu, tak jak poniżej, walidację na UserInfoBasicModel już nie działa:
obiektu, który obudowuje obiekt UserInfoBasicModel:
public static class UserUpdateFormTransmitter {
@Valid
private UserInfoBasicModel userInfoBasicModel;
//getter and setter
//..ignored..
}
kontroler:
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(method = RequestMethod.POST, value = "/registry/")
public String registry(HttpServletRequest request,
ModelMap modelMap,
@Valid UserUpdateFormTransmitter userUpdateFormTransmitter,
BindingResult result) {
//...some code here...
}
}
Zastanawiam się, dlaczego @valid annotaion nie działa rekurencyjnie tak jak to, co mówi JSR 303: Bean Validation. Czy ktoś może mi dać rozwiązanie, które pozwoli rekurencyjnie uprawomocnić mój obiekt, bardzo dziękuję !!!!
Może drugi ważny można pominąć? Pierwszy poprawny powinien kaskadować się przez cały model. – tstorms
Robię coś bardzo podobnego do Spring 3.2.4.RELEASE, i dodanie '@ Valid' do mojego odpowiednika do' userInfoBasicModel' w 'UserUpdateFormTransmitter' sprawiło, że działało to dla mnie. Bez tego sprawdzanie zagnieżdżone zostało zignorowane. –