kuniku’s diary

はてなダイアリーから移行(旧 d.hatena.ne.jp/kuniku/)、表示がおかしな箇所はコメントをお願いします。記載されている内容は日付およびバージョンに注意してください。直近1年以上前は古い情報の可能性が高くなります。

S2Strutsでのtilesの利用

S2StrutsExample-V1.3.0-RC6では、view側(プレゼンテーション層?)がmayaaからjspに変わってます。
そこで、tilesを使ってレイアウトを作成されているのだけれど、tiles-defs.xmlなどが存在しない。
と思ったら、web.xmlで下記の通り、書いてあった。
こうゆうやり方もあるんだね。

  <jsp-config>
    <jsp-property-group>
      <url-pattern>*.jsp</url-pattern>
      <el-ignored>false</el-ignored>
      <page-encoding>UTF-8</page-encoding>
      <scripting-invalid>false</scripting-invalid>
      <include-prelude>/WEB-INF/view/common/taglib-defs.jsp</include-prelude>
      <include-prelude>/WEB-INF/view/common/var-defs.jsp</include-prelude>
      <include-prelude>/WEB-INF/view/common/tails-defs.jsp</include-prelude>
    </jsp-property-group>
  </jsp-config>

それは、さておき、S2Struts1.2でtilesを使おうと思い、
Struts-TECHSCORE-実習課題1をやってみることにした。
なんか、エラーとか出てうまくいかんな〜と googleくんで検索してみたら
[Seasar-user:5878] Re: [S2Struts] s2-struts-1.3.0-beta-2でのTilesの利用について
というタイトルでTilesを利用する場合の変更点があった。
メールのアーカイブのURLはhttp://ml.seasar.org/archives/seasar-user/2007-January/005878.html
そこを見ると、s2struts1.3のことみたいだけど、

2.S2Struts V1.2.8では、s2struts.diconの
>
> に切り替えて使用していましたが、

とあったので、s2struts.diconをS2TilesRequestProcessorを使うように変更してみた。
こんな感じ↓

  • s2truts.diconの変更
<!-- 変更前
<component name="requestProcessor"             class="org.seasar.struts.processor.S2RequestProcessor" instance="prototype">
	<aspect pointcut="processActionForm">
		<component class="org.seasar.struts.interceptors.ProcessPojoFormInterceptor"/>
	</aspect>
</component>
-->
<!-- 変更後 S2RequestProcessorの方を使い、nameを"tilesRequestProcessor"→"requestProcessor" -->
<component name="requestProcessor"        class="org.seasar.struts.processor.S2TilesRequestProcessor" instance="prototype">
	<aspect pointcut="processActionForm">
		<component class="org.seasar.struts.interceptors.ProcessPojoFormInterceptor"/>
	</aspect>
</component>
  • struts-config.xmlのcontrollerを変更する

S2RequestProcessor→S2TilesRequestProcessorへ

<controller
       processorClass="org.seasar.struts.processor.S2TilesRequestProcessor"/>

でも、よく見たら、S2Strutsリファレンス 基本的な使い方に、

S2とStrutsを連動させるためにS2用のRequestProcessorをstruts-config.xmlに登録する必要があります。 S2RequestProcessorとS2TilesRequestProcessorを用意しています。これらはそれぞれStrutsのRequestProcessorとTilesRequestProcessorに相当します。

書いてあったよ。

Tiles 設定ファイルを使用しない方法

http://www.techscore.com/tech/ApacheJakarta/Struts/answer/23-1.html
ここ見たら
Tiles 設定ファイルを使用しないで作成する方法があった。
普通に、デファクトスタンダードなんだろうか・・・。tiles-defs.xmlを用意せずにできるってことは、サーバーの再起動が不要なので、jspを変更したら即変更内容が認識してくれるから、xmlを使わない方が若干楽なのかな。