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>タグで、対話の終了も指定している。