faces-config.xml

faces-config.xmlは、JSFエンジンに必要な情報を記述する、JSF設定ファイルである。

本アプリケーションにおいては、ビューハンドラ(レスポンスの作成、ビューの復元の中心となるクラス)のみを設定している。Faceletsを用いるのであれば、ビューハンドラとして、com.icesoft.faces.facelets.D2DSeamFaceletViewHandlerを登録しなければならない。ICEfacesにおけるビューハンドラのクラスの関係を図12に示す。

図12 ビューハンドラクラスの継承関係

なお、JSFのManaged Beanは、Seamコンポーネントであるため、ここでの宣言は不要である。

components.xml

components.xmlは、JBoss Seamにおいてコンポーネントの設定をするファイルである。また、リスト6で見たように、コンポーネントから起動されるイベントと、イベントリスナも設定可能である。

リスト10は、ICEfacesとJBoss Seamを連携させて用いる場合に(必須ではないが)有用な設定である。リスト10では、ICEfacesにおいて、サーバ起動のレンダリングを実行するために必要なRenderManagerを、Seamコンポーネントとして登録している。

リスト10 components.xmlにおけるコンポーネントRenderManagerの設定

<component scope="APPLICATION" auto-create="true" name="renderManager"
  class="com.icesoft.faces.async.render.RenderManager" />

このように設定しておくことで、RenderManagerをSeamコンポーネントにインジェクト、アウトジェクトすることが可能である。

pages.xml

pages.xmlは、ページアクション(レスポンスのレンダリングフェーズの前に起動されるイベント)やナビゲーションを記述する、JBoss Seamの設定ファイルである。

※ 本アプリケーションを動作させると、URLの後ろにパラメータが付いているリクエストが多いことに気がつくだろう。JBoss Seamにおいては、ページパラメータおよびページアクションを用いることで、GETリクエスト(non-facesリクエスト)に対しても処理を実行できる

ここでは、JSFのoutcomeがhomeである場合に、/home.xhtmlへリダイレクトするなど、全ページで共通のJSFのナビゲーションが記述されている。また、<exception>タグによって、ログインがまだである場合に、/login.xhtmlページにリダイレクトするなど、例外発生時のページ遷移が記述されている。

その他のページアクションやナビゲーションは、*.page.xmlというファイルに細分化されている。たとえば、IceUserEdit.xhtmlページに関する設定は、IceUserEdit.page.xmlファイルに、リスト11のように記述されている。

リスト11 ページアクションの設定(IceUserEdit.page.xml)

<page no-conversation-view-id="/IceUserList.xhtml" login-required="true">
  <begin-conversation join="true"/>

  <action execute="#{iceUserHome.wire}"/>

  <param name="iceUserFrom"/>
  <param name="iceUserUserId" value="#{iceUserHome.iceUserUserId}"/>

  <navigation from-action="#{iceUserHome.persist}">
    <end-conversation/>
    <redirect view-id="/IceUser.xhtml"/>
  </navigation>
  <navigation from-action="#{iceUserHome.update}">
    <end-conversation/>
    <redirect view-id="/IceUser.xhtml"/>
  </navigation>
  <navigation from-action="#{iceUserHome.remove}">
    <end-conversation/>
    <redirect view-id="/IceUserList.xhtml"/>
  </navigation>
</page>

<page>タグ

ページを指定するルート要素。属性にて、対話が存在しない場合の画面の遷移先を指定している。

<action>タグ

ページアクションを指定している。このように指定することで、複数のページアクションを指定することも、if属性などにより起動条件を指定することも可能である。

<begin-conversation>タグ

このページで対話が開始することを指定している。

<param>タグ

ページパラメータを指定している。たとえば、ユーザIDがashiwaであるユーザ情報を編集する場合には、パラメータiceUserUserId=ashiwaを含むGETリクエストが送信される。

<navigation>タグ

ナビゲーションを指定している。<end-conversation>タグで、対話の終了も指定している。