JIRAに挙がってる改良提案

これ実装してほしい!
https://issues.apache.org/struts/browse/WW-1866


一覧画面の各レコードに更新ボタンがあって、そこから
入力画面 → 確認画面 → 完了画面
と遷移していくといった、いわゆるマスタメンテ系の機能ではよくあるパターン。
こういうのは、Struts1の頃は
・入力画面表示Action
 IDを受け取り、修正対象レコードを取得(IDが必須)
・確認画面表示Action
 入力値の検証(ActionFormのvalidationを行う)
・完了画面表示Action
てな具合にそれぞれ個別にActionクラスを作成していました。

それをStruts2で1個のActionクラスで済ませられないかなーと考えた時に、現状だとResultアノテーションをActionクラス単位にしか設定できなくてうまくいかないのですね。
具体的には、

public class UserUpdateAction extends ActionSupport {
	private String id;
	private User user;
	
	@Validations(requiredStrings={@RequiredStringValidator(fieldName="id", message="不正")})
	public String edit(){
		//受け取ったIDから対象レコードを取得し、入力画面へ
		return "edit";
	}
	@Validations(visitorFields={@VisitorFieldValidator(fieldName="user", message="")})
	public String confirm(){
		//確認画面へ
		return "confirm";
	}
	@Validations(visitorFields={@VisitorFieldValidator(fieldName="user", message="")})
	public String update(){
		//更新処理を行い、完了画面へ
		return "updateCommit";
	}
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
}

上記のようなActionクラスを作成し、前々回出てきたvalidateAnnotatedMethodOnlyをtrueにして
入力画面表示時はIDの入力チェックを、確認画面表示時はActionFormの入力チェックを行うようにします。でも、いずれの入力チェックエラーの場合も、結果コードは"input"となります。なので
・入力画面時にIDが渡ってこなかった場合は一覧画面へ
・確認画面時にActionFormの入力チェックエラーとなった場合は入力画面へ
といった設定ができないのです。
まあ、IDの入力チェックをStruts2のValidationの機構に任せずに自力でやるなりすればいいのかもしれませんが。。。