ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Super Agile Struts開発記その11 - 遷移先の指定を簡易化

これまで、遷移先は、下記のように指定してきました。


@Result(name = "list", path = "/employee/list.jsp")
1つだけならまだいいんですが、複数あるとちょっとうざったい。

@Results({
@Result(name = "list", path = "/employee/list.jsp"),
@Result(name = "edit", path = "/employee/edit.jsp")
})
@Results({})のように配列で指定するのは、意外と敷居が高い(自分も良く間違える)ものです。SAStrutsは、アノテーションが多くて、敷居が高く感じるという感想もいただいていたので、この辺を簡易化したいと思います。
dewaさんに、

@Execute
public String execute() {
return "list";
}
ではなく、

@Execute
public String execute() {
return "/employee/list.jsp";
}
のように直接遷移先を指定したほうがわかりやすいんじゃないのというアドバイスをもらっていたので、それを踏まえて、

@Execute
public String execute() {
return "list.jsp";
}
のように自分と同じ場所(ディレクトリ)にいるJSPやActionに遷移するなら、サブアプリケーションを指定しなくてもすむようにしたいと思います。
他のサブアプリケーションに遷移する場合は、サブアプリケーションもパスに含めます。

@Execute
public String execute() {
return "/サブアプリケーション/xxx.jsp";
}
redirectしたい場合は、クエリストリングの最初最後に指定することにしたいと思います。最後に変更したのは、redirect=trueは最終的にはなくなってしまう仮想的なクエリストリングだからです。

@Execute
public String execute() {
return "list.jsp?redirect=true";
}

@Execute
public String execute() {
return "list.jsp?key=value&redirect=true";
}
この方法だと、redirectの時に、動的に渡すパラメータを変えたいときも簡単に指定できるようになります。バリデーションを除けば、通常使うアノテーションは、@Executeだけになるので、敷居も下がるのではないでしょうか。