struts2 画面遷移

ページ遷移

struts.xmlに記述する方法と、アノテーションを使用する方法がある。


struts.xmlに記述する場合

<action name="A" method="B" class="C">
     <result name="D">E</result>
</action>
 A:任意のアクション名
 B:実行するメソッド
 C:実行するアクションクラス
 D:アクションクラスより返却する、遷移先を示す文字列
 E:遷移先JSP

例) test1.jsp → TestAction → test2.jsp

 struts.xml
<action name="TestActionName" method="doTest" class="jp.co.sample.TestAction">
    <result name="input">webroot/test2.jsp</result>
</action>

 test1.jsp
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
    <body>
        <s:submit action="TestActionName" value="実行" />
    </body>
</html>

 TestAction.java
public class TestAction {
    public String doTest() {
        return "input";
    }
}

 test2.jsp
<html>
    <body>
        遷移成功
    </body>
</html>


アノテーションを使用する場合

 命名規約に従うことでstruts.xmlの設定が不要となる。

例) 前述と同様

 web.xml
  • filterタグの中にアクションクラスのパッケージを指定
<web-app>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        <init-param>
            <param-name>actionPackages</param-name>
            <param-value>jp.co.sample</param-value>
        </init-param>
    </filter>
</web-app>

 test1.jsp
 アクション名の指定を規約に従う。
  • アクションクラス名の頭を小文字にし、「Action」を抜いた文字列を指定する
  • 実行メソッド名は、「!」の後に記述する
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
    <body>
        <s:submit action="test!doTest" value="実行" />
    </body>
</html>

 TestAction.java
  • struts.xmlのpackageタグのnameをParentPackageに記述
  • 遷移先のJSPをアノテーションで記述
@ParentPackage(value="mydefault")
@Results({
    @Result(name="input" value="webroot/test2.jsp")
})
public class TestAction {
    public String doTest() {
        return "input";
    }
}

 test2.jsp
<html>
    <body>
        遷移成功
    </body>
</html>
最終更新:2009年04月01日 07:44
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。