1.0.x から 1.1.x への移行

バージョン 1.0.x から 1.1.x へ移行する際に注意すべき点を解説します。

互換性のない変更点

リクエストパラメータをバインドするプロパティ

1.0.x ではリクエストパラメータはその名前と同名のプロパティにバインドされます。
これだと、想定外のパラメータが入力された場合には(インジェクションされることを想定したプロパティなど) 想定外のプロパティにバインドされてしまうことがあります。

たとえば、以下のソースではリクエストに "fooService" というパラメータがあった場合に fooService に String 型のオブジェクトをバインドしようとして例外が発生してしまいます。

public class FooAction extends Action {
        public String name;
        public FooService fooService;
}

これは問題があるので、1.1.x 以降ではバインドされるプロパティとバインドされないプロパティを明確に分類できるようになっています。

アクション自身にリクエストパラメータをバインドしていた場合は、リクエストパラメータをバインドしたいプロパティを @RequestParameter で修飾してください。

public class FooAction extends Action {
        public @RequestParameter String name;
        public FooService fooService;
}

また、1.0.x と同様にすべてのプロパティをバインド対象とすることもできます。
詳細はリクエストパラメータのバインドを参照してください。

リクエストパラメータをバインディングする際の型変換

1.0.x ではリクエストパラメータをバインディングする際の型変換に S2Dxo の機能、コンバータを使用していましたが、 1.1.x では型変換を内包しています。

org.seasar.extension.dxo.converter.Converter を実装した独自のコンバータクラスをコンテナに登録しておくことで型変換に使用することができましたが、 そのような独自コンバータを使っていた場合は org.seasar.cubby.converter.Converter を実装したクラスに置き換えてください。

@DxoConverter でプロパティごとに独自のコンバータを指定することができましたが、これは機能しません。

推奨されない API

@Form#binding

@Form#binding は推奨されない API となりました。
リクエストパラメータをオブジェクトにバインドしない場合は @Form#bindingTypeNONE) を指定してください。