WebWork2を使うようになって1年半程度経ちましたが、なぜWebWork2を使うのか考えてみました。
良い点
- Interceptorが便利
機能の多くがActionの前後で処理を行うInterceptorになっています。
これは機能を追加したり外したり、順番を変えたりするときに非常に便利です。
Interceptorは柔軟に設定できるため、機能を拡張するために独自のFrontControllerを使ったり、共通のクラスを継承させたりしなくても済みます。
- Resultが良い
これは好みの問題もありますが、自分の場合はResultが非常に好きです。
Viewの部分は完全に分離され、ValueStackを通じて使用する値を取得します。
ValueStackの使い方を覚えれば独自のResultも簡単に作成することが出来ます。
- DIコンテナと連携しやすい
はじめからDIコンテナ(IoCコンテナ)との連携を考えて作られているため、
SpringやSeasar2などと連携させるのが簡単です。
悪い点
- ActionSupportがいまいち
ActionSupportにはエラー処理やメッセージ取得用の機能が入っていますが、
これら(ValidationAwareやTextProvider)はインターフェースがあるにもかかわらず、
ActionSupport内で具象クラスのインスタンスを生成しており変更が困難です。
- Validatorの機能がいまいち
Validatorの機能は少なめです。比較的単純なパターンのみに使用をとどめておいた方がいい気がします。
- ドキュメントが少ない
これはたぶんサンプルになるアプリケーションが少ないと言うことだと思います。
個人的にはあまり苦労していないんですが、人に使ってもらうには必要なのでしょう。