Spring MVCコントローラでパス変数とクエリパラメータを処理するためにJava Bean検証アノテーションを取得しようとしています。 (環境:Spring Boot v1.3.5、Springxxx 4.2.6、プログラミング言語Kotlin 1.0.3)Spring MVCコントローラのJava Bean検証PathVariables
@RequestMapping(value = "/{someId}" ...)
fun getSomething(**@SomeValidId** @PathVariable("someId") someId: String):...
https://raymondhlee.wordpress.com/2015/08/29/validating-spring-mvc-request-mapping-method-parameters/に記載され、また上記にvalidatorFactoryようorg.springframework.validation.beanvalidation.LocalValidatorFactoryBean加え、私はorg.springframework.validation.beanvalidation.MethodValidationPostProcessor追加しました。に思わ
@Configuration
...class .... {
...
@Bean
open fun localValidatorFactoryBean() = LocalValidatorFactoryBean()
@Bean
open fun methodValidationPostProcessor() : MethodValidationPostProcessor {
val methodValidationPostProcessor = MethodValidationPostProcessor()
methodValidationPostProcessor.setValidator(localValidatorFactoryBean())
return methodValidationPostProcessor
}
}
しかし、コントローラクラスのように示唆したルックスがプロキシされるように私は org.springframework.validation.annotation.Validatedとコントローラクラス(またはそれを実装インタフェース)を注釈を付けます(期待どおりになる - https://github.com/spring-projects/spring-security/issues/3215)。
しかしこれにより、Spring mvcリクエストマッピング設定でSomeControllerが無視されます。 org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods()のようなSpringフレームワーク・コードのデバッグは、Beanのリストを調べ、ハンドラ・メソッドを検出しようとしますが、上記のコントローラは、 @Controllerまたは@RequestMapping注釈を持ちません。
誰にも分からないことはありますか?可能なはずだと示唆しているような情報がたくさんあるようですが、実際の例は見つかりませんでした。