codebehindプラグイン

ログイン画面を表示するLoginActionがあるとして。
表示する画面はlogin.jspだとする。
このような簡単な画面遷移を扱うときに楽になるのがcodebehindプラグイン
struts2-codebehind-plugin-2.0.6.jarをWEB-INF/libに配置するだけで以下の機能が有効になるっぽい。


web.xmlの設定

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        <init-param>
        	<param-name>actionPackages</param-name>
        	<param-value>struts2test</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

struts2test.login.LoginActionの内容

//Resultアノテーション設定不要
public class LoginAction extends ActionSupport {
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
}

んで、/login/login.actionにアクセスするとlogin/login.jspが表示される。
正確には、最初にlogin/login-success.jspが検索され、見つからないのでlogin.jspとなるらしい。
ただ、個人的にはなるべくJSPファイルはアプリケーションの直下には置きたくない。
WEB-INF以下のディレクトリに配置したい。
そんなときは、
struts.propertiesに

struts.codebehind.pathPrefix=/WEB-INF/jsp/

などと書いておく。
そうすると、JSPファイルを探す起点が/WEB-INF/jsp/になる。


ちなみに、上の例だとそもそもLoginActionは無くても良い。
該当するActionクラスが無くても、勝手にアクセスされたURLに対応するpathにあるJSPが表示される。