SAStruts のポートレット対応
概要
SAStruts で作成したアプリケーションをポートレットしても動作させる方法を提供しています。 通常の SAStruts アプリケーションの作成後、設定ファイルを変更することでポートレットとして利用することができます。
設定方法
本章の変更を適用することで SAStruts のアプリケーションをポートレットとして利用することができます。
変更内容
- web.xml を変更
- struts-config.xml を変更
- common.jsp を変更
- portlet.xml を追加
- sa-struts-portlet-*.jar を追加
web.xml を変更
web.xml で以下の点を変更します。
- org.seasar.struts.portlet.filter.PortletRequestFilter を encodingFilter の後に INCLUDE で追加
- org.seasar.framework.container.filter.S2ContainerFilter を org.seasar.struts.portlet.filter.S2ContainerFilter に変更
- org.seasar.framework.container.hotdeploy.HotdeployFilter を org.seasar.struts.portlet.filter.HotdeployFilter に変更
- org.seasar.struts.portlet.filter.PortletRoutingFilter を routingfilter の後に INCLUDE で追加
- org.apache.struts.action.ActionServlet を org.seasar.struts.portlet.servlet.ActionServlet に変更
以下は web.xml の変更例です。
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<context-param>
<param-name>sastruts.VIEW_PREFIX</param-name>
<param-value>/WEB-INF/view</param-value>
</context-param>
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter>
<filter-name>portletRequestFilter</filter-name>
<filter-class>org.seasar.struts.portlet.filter.PortletRequestFilter</filter-class>
</filter>
<filter>
<filter-name>requestDumpFilter</filter-name>
<filter-class>org.seasar.extension.filter.RequestDumpFilter</filter-class>
</filter>
<filter>
<filter-name>s2filter</filter-name>
<filter-class>org.seasar.struts.portlet.filter.S2ContainerFilter</filter-class>
</filter>
<filter>
<filter-name>hotdeployfilter</filter-name>
<filter-class>org.seasar.struts.portlet.filter.HotdeployFilter</filter-class>
</filter>
<filter>
<filter-name>routingfilter</filter-name>
<filter-class>org.seasar.struts.filter.RoutingFilter</filter-class>
<init-param>
<param-name>jspDirectAccess</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter>
<filter-name>portletRoutingfilter</filter-name>
<filter-class>org.seasar.struts.portlet.filter.PortletRoutingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodingfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>portletRequestFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>s2filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>hotdeployfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>routingfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>portletRoutingfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>requestDumpFilter</filter-name>
<url-pattern>*.do</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.seasar.struts.portlet.servlet.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>configFactory</param-name>
<param-value>org.seasar.struts.config.S2ModuleConfigFactory</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
...
struts-config.xml を変更
struts-config.xml で以下の点を変更します。
- org.seasar.struts.action.S2RequestProcessor を org.seasar.struts.portlet.action.S2RequestProcessor に変更
以下は struts-config.xml の変更例です。
...
<controller
maxFileSize="1024K"
bufferSize="1024"
processorClass="org.seasar.struts.portlet.action.S2RequestProcessor"
multipartClass="org.seasar.struts.upload.S2MultipartRequestHandler"/>
...
common.jsp を変更
common.jsp で以下の点を変更します。
- <%@taglib prefix="s" uri="http://sastruts.seasar.org"%> を <%@taglib prefix="f" uri="http://sastruts.seasar.org/functions"%> に変更
以下は common.jsp の変更例です。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@taglib prefix="html" uri="http://struts.apache.org/tags-html"%> <%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%> <%@taglib prefix="tiles" uri="http://jakarta.apache.org/struts/tags-tiles"%> <%@taglib prefix="f" uri="http://sastruts.seasar.org/functions"%> <%@taglib prefix="s" uri="http://sastruts.seasar.org/portlet"%>
portlet.xml を追加
portlet.xml を作成して、ポートレット情報を記述してください。
以下は portlet.xml の作成例です。 portlet-class には org.seasar.struts.portlet.SAStrutsPortlet を指定します。 初期値の viewPage の値に初期ページのパスを指定します。 指定されたパスがポートレットにアクセスしたときに表示されるページになります。
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app version="1.0"
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
<portlet>
<description>SAStruts Tutorial</description>
<portlet-name>SAStrutsTutorialPortlet</portlet-name>
<display-name>SAStruts Tutorial Portlet</display-name>
<portlet-class>org.seasar.struts.portlet.SAStrutsPortlet</portlet-class>
<init-param>
<name>viewPage</name>
<value>/</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<supported-locale>ja</supported-locale>
<portlet-info>
<title>SAStruts Tutorial</title>
<keywords>SAStruts,sample</keywords>
</portlet-info>
</portlet>
</portlet-app>
init-param では、以下のものを指定することができます。
| 名前(name) | 値(value) |
|---|---|
| viewPage | 表示(VIEW)モードの初期ページ。 |
| editPage | 編集(EDIT)モードの初期ページ。 |
| helpPage | ヘルプ(HELP)モードの初期ページ。 |
| contentType | デフォルトのコンテンツタイプ。アプリケーション側で設定されていない場合に利用します。 |
| encoding | 処理時に利用するエンコーディング。指定しない場合は UTF-8 です。 |
| maxCacheSize | 保持する過去ページのキャッシュ値です。デフォルトは 5 です。このキャッシュはブラウザの戻るボタンをクリックしたときに利用します。 |
sa-struts-portlet-*.jar を追加
sa-struts-portlet-*.jar を取得して、WEB-INF/lib に追加してください。 http://maven.seasar.org/maven2/org/seasar/sastruts/sa-struts-portlet/ などから取得できます。
ビルドと配備
上記の設定後、今まで通りビルドして、war ファイルを作成してください。 war ファイルをポータルに配備して、ポートレットとして利用することができます。
NEWS
- 2009/12/06 SAStrutsポートレット 1.0.2 をリリースしました。こちら
- 2009/10/24 SAStrutsポートレット 1.0.1 をリリースしました。こちら
- 2009/02/13 SAStrutsポートレット 1.0.0 をリリースしました。こちら
- 2008/12/31 SAStrutsポートレット 1.0.0-rc5 をリリースしました。こちら
- 2008/12/01 SAStrutsポートレット 1.0.0-rc4 をリリースしました。こちら
- 2008/09/25 SAStrutsポートレット 1.0.0-rc3 をリリースしました。こちら
- 2008/09/08 SAStrutsポートレット 1.0.0-rc2 をリリースしました。こちら
- 2008/09/04 SAStrutsポートレット 1.0.0-rc1 をリリースしました。こちら
Subversionリポジトリ
SAStruts ポートレットのソースコードは、seasar.org のSubversionリポジトリで公開されています。 どなたでもアクセスしてソースコードを閲覧することができます。 (以下のリンクをクリックするとWeb経由でもソースコードを閲覧できます)
注意点
ポートレットの仕様の都合上、制限事項があります。
- 初回アクセスなどで表示だけの処理が行われる場合、実行メソッドでリダイレクトを設定できません。ポートレットではリダイレクトを processAction() のときしかできないためです。
- このライブラリは、デフォルトで、ポートレット表示に不要な body タグ以上の要素は出力時に削除します。この処理をスキップするためには、web.xml の PortletRequestFilter の設定で init-param で contentOnly を false と設定してください。
