Spring MVCとStrutsの一番の違い

やっぱりアクションフォーム(SpringMVCではコマンド)関係かなぁ。

Strutsは数値型のプロパティ用意しても変換不可能なものを入力されると0という値に変換して何事もなかったように返すのが一番の問題。したがって、へんにいじられるくらいならばStringだけでいいとかになる。そして型変換全部やるのかよといった面倒なお話になるのも普通。

Spring MVCは数値型のプロパティに文字の入力を入れるとエラーになります。それはBindExceptionとして不正な入力があったパラメータ名や値がとりだせます。そしてエラーがあった場合自動で入力画面に戻され、submitのアクションは呼ばれません。

Spring MVCのほうが一見よさげに見えますが、単純にはそうはいかないのがこまったところ。なんといっても入力エラーがあった場合コマンドは生成されません。テキストフィールドに入力した不正な値も正しい値もセットしたりそれによるエラー処理とかをするとき面倒なお話になります。


というわけで一長一短ですが、SpringMVCのほうがいろいろと挟み込んだり拡張ポイントが用意されていたりして楽なのには変わりませんけど。たぶん、自作Controllerでこのへん全部面倒を見たほうが楽っぽいです。なによりStrutsはconfigの生産性の悪さに頭が痛いのでほかがすべてStrutsが優れていたとしてもかなりイマイチですけどね。

一応いっておくとこの話はSpring MVC 2.5になる前のお話です。2.5でコマンドをGETに割り当てるとどうなるかは確認していません。

ついでに言うとNetBeansは2.5未満のコントローラ作成のウィザードしか用意されていません。もうちょっとがんばってほしいところです。Springを使うならNetBeans!といえるようになるといいですね。