Struts2の@InputConfig

DefaultWorkflowInterceptor を見ていて解ったことですが、Validation に引っかかった場合のみに特定のメソッドを呼びだすことができるつくりになっています。
それを制御するのが @InputConfig アノテーション

たとえば

public class SampleAction{
    public String edit(){
      ...
    }

    @InputConfig(methodName="edit")
    public String save(){
      ...
    }
}

となっていて、save()メソッドが実行される前の Validation で引っかかった場合は、edit()が呼び出されます。

その際、resultはedit()の返り値に従うが、struts.xmlの設定は save() を呼び出す方の設定を見るので注意。
"input"を返す場合は、save()の方のの設定にが必要です。

Validation で引っかかった結果表示するページにおいて、何かのデータを読み込んでおかなければならない、という場合に使えます。
Preparableもその目的のために使えますが、それだとどのメソッドが実行される時でも呼ばれてしまいます。
それが不都合な場合の選択肢の1つとして知っておくと良いでしょう。

ちなみにこんなことは Struts のドキュメントには書かれていない。InputConfigのjavadocページには書かれているのだが、これだけクラスがあると...