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が表示される。