5

Spring 3 と JSR 303 を使用しています。ネストされたオブジェクトを検証する必要があるフォーム バッキング オブジェクトがあります。以下の例で、formObject.getFoo().getBean() を検証するにはどうすればよいですか? 以下のコードを実行すると、検証が失敗するはずの HTML ページが何も送信しない場合でも、結果パラメーターは常に空になります。を呼び出して手動で検証すると、機能する(つまり、検証が失敗する)ことに注意してくださいvalidate(formObject.getFoo().getBean(), Bean.class)

@Controller
public class FormController {
    @RequestMapping(method = RequestMethod.POST)
    public void process(HttpServletRequest request, @Valid FormObject formObject, BindingResult result) {
            ...
    }

    // This is the class that needs to be validated.
    public class Bean {
        @NotBlank
        private String name;
    }

    public class Foo {
        private Bean bean;
    }

    public class FormObject {
        private Foo foo;
    }
}
4

1 に答える 1

12

検証を子オブジェクトにカスケードする場合は、親オブジェクトのフィールドに @Valid 注釈を付ける必要があります。

public class Bean {
    @NotBlank
    private String name;
}

public class Foo {
    @Valid
    private Bean bean;
}

public class FormObject {
    @Valid
    private Foo foo;
}
于 2010-11-15T20:57:57.857 に答える