Super Agile Struts開発記その11 - 遷移先の指定を簡易化
これまで、遷移先は、下記のように指定してきました。
1つだけならまだいいんですが、複数あるとちょっとうざったい。
@Result(name = "list", path = "/employee/list.jsp")
@Results({})のように配列で指定するのは、意外と敷居が高い(自分も良く間違える)ものです。SAStrutsは、アノテーションが多くて、敷居が高く感じるという感想もいただいていたので、この辺を簡易化したいと思います。
@Results({
@Result(name = "list", path = "/employee/list.jsp"),
@Result(name = "edit", path = "/employee/edit.jsp")
})
dewaさんに、
ではなく、
@Execute
public String execute() {
return "list";
}
のように直接遷移先を指定したほうがわかりやすいんじゃないのというアドバイスをもらっていたので、それを踏まえて、
@Execute
public String execute() {
return "/employee/list.jsp";
}
のように自分と同じ場所(ディレクトリ)にいるJSPやActionに遷移するなら、サブアプリケーションを指定しなくてもすむようにしたいと思います。
@Execute
public String execute() {
return "list.jsp";
}
他のサブアプリケーションに遷移する場合は、サブアプリケーションもパスに含めます。
redirectしたい場合は、クエリストリングの
@Execute
public String execute() {
return "/サブアプリケーション/xxx.jsp";
}
@Execute
public String execute() {
return "list.jsp?redirect=true";
}
この方法だと、redirectの時に、動的に渡すパラメータを変えたいときも簡単に指定できるようになります。バリデーションを除けば、通常使うアノテーションは、@Executeだけになるので、敷居も下がるのではないでしょうか。
@Execute
public String execute() {
return "list.jsp?key=value&redirect=true";
}