私は@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注釈に依存する、あなたのコントローラにバリデータインスタンスを注入し、呼び出し:あなたprocessPageメソッドで
validator.validate(user, /*<step interface>.class*/);
を(あなたのリンクされた問題のコントローラを参照)、その後
validator.validate(user, FinalStep.class);
あなたのprocessFinishコールで。
人々が知っているように、このアプローチにはわずかな問題があります。 Springのvalidate()メソッドでJSR-303グループを使用することはできません。検証されるObjectとBindingResultだけを引数としてとります。 – Ryan