WebWork2を使う理由

WebWork2を使うようになって1年半程度経ちましたが、なぜWebWork2を使うのか考えてみました。

良い点

  • Interceptorが便利

機能の多くがActionの前後で処理を行うInterceptorになっています。
これは機能を追加したり外したり、順番を変えたりするときに非常に便利です。
Interceptorは柔軟に設定できるため、機能を拡張するために独自のFrontControllerを使ったり、共通のクラスを継承させたりしなくても済みます。

  • Resultが良い

これは好みの問題もありますが、自分の場合はResultが非常に好きです。
Viewの部分は完全に分離され、ValueStackを通じて使用する値を取得します。
ValueStackの使い方を覚えれば独自のResultも簡単に作成することが出来ます。

はじめからDIコンテナ(IoCコンテナ)との連携を考えて作られているため、
SpringやSeasar2などと連携させるのが簡単です。

悪い点

  • ActionSupportがいまいち

ActionSupportにはエラー処理やメッセージ取得用の機能が入っていますが、
これら(ValidationAwareやTextProvider)はインターフェースがあるにもかかわらず、
ActionSupport内で具象クラスのインスタンスを生成しており変更が困難です。

  • Validatorの機能がいまいち

Validatorの機能は少なめです。比較的単純なパターンのみに使用をとどめておいた方がいい気がします。

  • ドキュメントが少ない

これはたぶんサンプルになるアプリケーションが少ないと言うことだと思います。
個人的にはあまり苦労していないんですが、人に使ってもらうには必要なのでしょう。

まとめ

個人的には携帯向けサイトを作ることが多いのでJSFに完全移行は難しいと言うのもWebWork2を使う理由の一つです。
次バージョンからはStruts Action Frameworkに移行することで利用者や開発者も増えると思うので、WebWorkのシンプルさを活かしつつ機能を充実してもらいたいものです。