Struts 2では、

@ ResultPathアノテーション

を使用して、Struts 2が格納された結果またはJSPページを見つける場所を制御します。デフォルトでは、 ”

WEB-INF/content/

“フォルダから結果ページが検索されます。

なぜStruts 2の注釈がデフォルトのフォルダとして “WEB-INF/content/”を設定したのか分かりませんが、ほとんどのアプリケーションは結果ページをこの “WEB-INF/content/”フォルダに入れません。これは標準的なフォルダ構造ではなく、Struts 2の規約です。私はむしろStruts 2がデフォルトのフォルダとしてルートパスを置きました。

@ResultPathの例

1.デフォルトのResultPath

ログインアクションクラス。 ”

/User

“名前空間に設定し、 ”

pages/login.jsp

“ページにリダイレクトします。


P.S Struts2Exampleがコンテキストサーブレット名であると仮定します

@Namespace("/User")
@Result(name="success",location="pages/login.jsp")
public class LoginAction extends ActionSupport{
}

それにアクセスする

http://localhost:8080/Struts2Example/User/login.action

Struts 2はデフォルトの場所から ”

login.jsp

“の結果ページを見つけます

…​./Struts2Example/WEB-INF/content/User/pages/login.jsp

===  2.カスタムResultPath

JSPの結果ページが別の場所に格納されている場合は、**  @ ResultPath ** アノテーションを使用して変更できます。

@Namespace(“/User”)
@ResultPath(value=”/”)
@Result(name=”success”,location=”pages/login.jsp”)
public class LoginAction extends ActionSupport{
}

もう一度アクセスする

Struts 2は、異なる場所から "**  login.jsp ** "結果ページを見つけます

..../Struts2Example/User/pages/login.jsp

グローバル@ResultPath

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.convention.result.path" value="/"/>
</struts>