アプリをSpring2.0.7から3.1.1に移行していますが、initBinderで問題が発生しました。以前は次のようなメソッドがありました
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
MyCommand command = (MyCommand)binder.getTarget();
binder.registerCustomEditor(CustomerCard.class, createEditorFromCommand(command));
}
ここで、ターゲットはPropertyEditorによって使用されます。このメソッドは、アノテーション付きのコントローラーにしたときに呼び出されなくなったため、@InitBinder
アノテーションを追加しました。
@InitBinder
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
MyCommand command = (MyCommand)binder.getTarget();
binder.registerCustomEditor(CustomerCard.class, createEditorFromCommand(command));
}
残念ながら、これbinder.getTarget()
は単なるデフォルトオブジェクトです。@InitBinderのドキュメントには、コマンドをパラメーターとして取得できないことも記載されています。
このようなinit-binderメソッドは、コマンド/フォームオブジェクトと対応する検証結果オブジェクトを除いて、{@linkRequestMapping}がサポートするすべての引数をサポートします。
これを行う正しい方法は何ですか?