Zero Configurationなるものに惹かれたんだけど、ポストバックなアクションは実現できず・・・

Struts2を使って、ある画面に存在するリンクやボタンに対応する処理を、一つのアクションにまとめたかった。いわゆるポストバック的な考え方に基づいた実装をしたかった。なんだけど、設定ファイルなしでは、実現できそうにない。。。少し残念。。。まぁしゃーないのか。

以下、備忘録。

Zero Configurationというのは、struts.xmlにごりごりと定義を書くんじゃなくて、規約+アノテーションでアクションと遷移先なんかを対応付けるやり方。http://struts.apache.org/2.x/docs/zero-configuration.html

web.xmlのFiterDispatcherの設定でinit-paramにactionPackagesを定義することから始まる。

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  <init-param>
    <param-name>actionPackages</param-name>
    <param-value>com.foo</param-value>
  </init-param>
</filter>

このように書くと、com.fooパッケージ以下のアクションクラスをアクションとして認識してくれる。struts.xmlに書かなくても!おお、すばらしい!!!

だが喜んではいられなかった。上記のやり方で認識させたアクションクラスはアクションメソッドを一つしかかけないみたい。正確には@Resultsアノテーションがクラスレベルでしか記述できないらしい。

Results are defined with the Result and Results annotations at the class level.

えー、あかんやん。ポストバック的にアクションを使いたいので、画面に対応するアクションクラスに複数のアクションメソッドを定義したいのに。画面を初期化して表示するinputアクション、次の画面に進むnextアクションとか。