Я не знаю, как это осуществить с помощью аннотации @Valid, но вы сможете воспользоваться проверкой JSR-303 для достижения этой цели.В качестве несколько надуманного примера:
public class User {
@NotNull(message = "First name can't be blank", groups = {Step1.class, FinalStep.class})
private String firstName;
@NotNull(message = "Last name can't be blank", groups = {Step1.class, FinalStep.class})
private String lastName;
@NotNull(message = "Email can't be blank", groups = {Step1.class, FinalStep.class})
private String emailAddress;
@NotNull(message = "Please provide a valid address", groups = {Step2.class, FinalStep.class})
private Address address;
// getters/setters...
public interface Step1 {}
public interface Step2 {}
public interface FinalStep {}
}
Вы можете воспользоваться тем, что JSR-303 поддерживает группы проверки, предоставляя интерфейсы маркеров для представления ваших шагов мастера.
Тогда, вместо того чтобы полагатьсяв аннотации @Valid вставьте экземпляр Validator в свой контроллер и вызовите:
validator.validate(user, /*<step interface>.class*/);
в вашем методе processPage (ссылаясь на Controller в связанном вопросе), а затем
validator.validate(user, FinalStep.class);
вваш процессфинишный вызов.