Seasar DI Container with AOP

セットアップ

Seasar2と同様にJDK1.4以上が必要です。s2-jsf-x.x.x.zipを解凍し、できたs2jsfディレクトリをEclipseで 「ファイル→インポート→既存のプロジェクトをワークスペースへ」してインポートしてください。

サンプルはs2-jsf-example-x.x.x.jarとして別途用意されているので、ダウンロードして解凍してください。先程と同様 に、Eclipseで、「ファイル→インポート→既存のプロジェクトをワークスペースへ」でインポートします。サンプルは、 Tomcat5Tomcat Pluginを使うことを前提にしています。もし、 まだインストールしていない場合は、インストールしておいてください。

Tomcatを起動し、ブラウザでhttp://localhost:8080/s2jsf-exampleにアクセスすると、S2JSFのサンプルを見ることが 出来ます。

JSF標準以外のtaglibを使うには

S2JSFではJSF標準のタグライブラリ(プレフィクス"h"と"f")と、S2JSF用のタグライブラリ (プレフィクス"s")を使用できるようになっています。 もちろんこれら以外のカスタムタグライブラリも使用可能です。 そのためには次の設定が必要です。

  1. *.tldファイルを配置する (必要な場合のみ)
  2. "prefix"と"uri"をjsf.diconへ指定する

tldファイルを配置する

tldファイルの配置には2通りの方法があります。

jarへ含める

tldをjarファイルへ含める場合は、META-INFディレクトリ配下へ置くようにしてください。 S2JSFはWEB-INF/lib内に置かれているjarファイルのMETA-INFディレクトリ配下にある tldファイルを自動的に探します。

jsf.diconが次のようになっていることを確認してください。

<component class="org.seasar.jsf.runtime.ServletContextTaglibManagerImpl">
    <initMethod name="init"/>
    <destroyMethod name="destroy"/>
</component>

WEB-INF配下へ配置する

※S2JSF 1.0.14からの新機能です。1.0.14より前のバージョンでは、 jarの中へ配置する前述の方法のみ利用可能です。

tldをjarファイルへ含めない場合は、WEB-INF配下へtldを置くようにしてください。 S2JSFではWEB-INFディレクトリ配下に置かれているtldファイルを自動的に探すクラスを 用意してあります。

jsf.diconを次のように設定してください。

<!--
<component class="org.seasar.jsf.runtime.ServletContextTaglibManagerImpl">
    <initMethod name="init"/>
    <destroyMethod name="destroy"/>
</component>
-->
<component class="org.seasar.jsf.runtime.CompositeTaglibManager">
    <!--
    <initMethod name="addTaglibManager">
        <arg>
            <component class="org.seasar.jsf.runtime.WebappConfigTaglibManagerImpl">
                <initMethod name="init"/>
                <destroyMethod name="destroy"/>
            </component>
        </arg>
    </initMethod>
    -->
    <initMethod name="addTaglibManager">
        <arg>
            <component class="org.seasar.jsf.runtime.FileSystemTaglibManagerImpl">
                <initMethod name="init"/>
                <destroyMethod name="destroy"/>
            </component>
        </arg>
    </initMethod>
    <initMethod name="addTaglibManager">
        <arg>
            <component class="org.seasar.jsf.runtime.ServletContextTaglibManagerImpl">
                <initMethod name="init"/>
                <destroyMethod name="destroy"/>
            </component>
        </arg>
    </initMethod>
</component>

"prefix"と"uri"をjsf.diconへ指定する

次のようなtldファイルをS2JSFから使用するには、

<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>foo</short-name>
    <uri>http://example.com/</uri>
    [...]
</taglib>
jsf.diconへ次のように追加設定します。
<component class="org.seasar.jsf.runtime.JsfConfigImpl">
    <initMethod name="addTaglibUri">
        <arg>"h"</arg>
        <arg>"http://java.sun.com/jsf/html"</arg>
    </initMethod>
    <initMethod name="addTaglibUri">
        <arg>"f"</arg>
        <arg>"http://java.sun.com/jsf/core"</arg>
    </initMethod>
    <initMethod name="addTaglibUri">
        <arg>"s"</arg>
        <arg>"http://www.seasar.org/jsf"</arg>
    </initMethod>
    <initMethod name="addTaglibUri">
        <arg>"foo"</arg>
        <arg>"http://example.com/"</arg>
    </initMethod>
</component>
addTaglibUriの第1引数が"prefix"、第2引数が"uri"です。 uriはtldのuriと合わせる必要があります。

この設定を行うことで、J2JSFのhtmlからプレフィクス"foo"でこのtaglibを使用できるように なります。