ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Adaptive Access Manager開発者ガイド
11gリリース2(11.1.2)
B71697-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

9 ユーザー・フローとレイアウトのカスタマイズ

OAAMでは、ユーザー・フローとレイアウトのカスタマイズがサポートされています。OAAMでは、Struts/Tilesフレームワークを使用してアプリケーションに共通のルック・アンド・フィールを作成します。

9.1 ユーザー・フローとレイアウト

WEB-INFディレクトリにあるStruts構成ファイルstruts-config.xmlでは、すべてのナビゲーション・ルールがアクション定義の形式で定義されています。WEB-INFディレクトリにあるTilesレイアウト・ファイルtiles-def.xmlには、様々なページの定義が含まれています。

OAAMユーザー・インタフェース・フローとJava Server Pages(JSP)のレイアウトをカスタマイズするには、OAAMサーバーJSPとStrutsアクション・ターゲットをOAAM拡張共有ライブラリ(oracle.oaam.extensions.war)を使用してオーバーライドする必要があります。拡張共有ライブラリには、カスタマイズに使用する次の2つのファイルが含まれています。


注意:

カスタマイズは、OAAM拡張共有ライブラリのみで行ってください。struts-config.xmlファイルとtiles-def.xmlファイルは変更しないでください。


9.1.1 Strutsアクション

この項では、ユーザー・フローの駆動に使用するStrutsアクション定義について説明します。OAAMアクション・タイプ・クラスの概要も示しています。

9.1.1.1 アクション定義

アクション定義には通常、パス、タイプおよびパラメータの属性が含まれています。パスでは、URLが定義されます。多くの定義には、次に表示するページを示すフォワード要素が1つ以上含まれています。ログイン・ページの例を示します。

           <action path="/login" type="com.bharosa.uio.actions.LoginAction">
                      <forward name="success" path="/updateLoginStatus.do" redirect="true"/>
                      <forward name="loginJump" path="/loginJumpPage.jsp" redirect="true"/>
                      <forward name="password" path="password"/>
                      <forward name="challenge" path="/challengeUser.do" redirect="true"/>
                    </action>

9.1.1.2 アクション・タイプ

ログイン・ページの例では、URLはhttp://server name/oaam_server/login.doです。login.doは、/loginのパス定義から取得されます。タイプ・パラメータは、アクションを実行するクラスを定義します。サンプル・ユーザー・ページでは、次のクラスが指定されています。

表9-1 アクション・タイプ・クラス

クラス名 説明

com.bharosa.uio.actions.LoginAction

ログイン・ステータスを更新し、必要に応じてユーザーにチャレンジします。

com.bharosa.uio.actions.LoginFailAction

OAAMサーバー・ページにエラー・メッセージを表示します。たとえば、ログイン・ブロック済メッセージが表示されることがあります。

com.bharosa.uio.actions.ActivityAction

OAAMサーバー・ページに確認メッセージを表示します。

com.bharosa.uio.actions.PasswordAction

パスワード・ステータスを更新します。

com.bharosa.uio.actions.UpdateAuthStatusAction

ユーザー認証ステータスを更新し、必要に応じてパターン・データ処理をトリガーします。

com.bharosa.uio.actions.ValidateTrxAction

トランザクションを検証します。

com.bharosa.uio.actions.FlashFingerprintAction

デバイスをフィンガープリント処理します。

com.bharosa.uio.actions.LogoutAction

ユーザー・セッションをログアウトして、ログイン・ページにリダイレクトします。

com.bharosa.uio.actions.SignOnAction

ユーザーをサイン・インします。

com.bharosa.uio.actions.RegisterQuestionsAction

質問セットが表示されます。ユーザーはこの中から質問を選択し、質問ごとの正しい回答を登録できます。

com.bharosa.uio.actions.ChangePasswordAction

パスワード変更リンクを表示します。

com.bharosa.uio.actions.ForgotPasswordAction

パスワードを忘れた場合のリンクを表示します。

com.bharosa.uio.actions.UserInputAction

入力フィールドを表示します。

com.bharosa.uio.actions.UserPreferencesDoneAction

ユーザーのプリファレンス登録終了メッセージを表示します。

com.bharosa.uio.actions.ChallengeUserAction

ユーザーがすでに登録した質問の1つとあわせて質問パッドを表示することにより、ユーザーにチャレンジします。

com.bharosa.uio.actions.ChangeUserNameAction

ユーザー名を変更します。

com.bharosa.uio.actions.MessageAction

ユーザーにメッセージを表示します。

com.bharosa.uio.actions.ExitAction

ユーザーをリソースから終了させます。

com.bharosa.uio.actions.ErrorAction

エラーが発生します。


9.1.2 ベース・レイアウト定義

ユーザー・インタフェース・ページは、StrutsアプリケーションでTilesを使用して作成されます。外部構成ファイル(/WEB-INF/tiles-def.xml)には、様々なページの定義が含まれています。

ベース・レイアウトbharosa.uio.baseLayoutは、様々な項を含めるように定義されています。ヘッダー部分はcustomHeader.jspページで、フッター部分はcustomFooter.jspページで、ボディ部分はコンテンツでそれぞれ占められています。次のコードは、ベース・レイアウトを示しています。

  <definition name="bharosa.uio.baseLayout" path="/bharosaUIOBaseLayout.jsp">
    <put name="header" value="/customHeader.jsp"/>
    <put name="footer" value="/customFooter.jsp"/>
    <put name="body" value="${body}"/>
  </definition>
 

ユーザー・インタフェース・ページを作成するには、tiles-def-extension.xml構成ファイル内でベース・レイアウトに使用するJSPページを定義します。次の例では、baseLayout定義を拡張し、registerQuestionsHTML.jspというJSPを使用してコンテンツ・タイルをレンダリングしています。

<definition name="registerQuestionsHTML" extends="bharosa.uio.baseLayout">
   <put name="body" value="/registerQuestionsHTML.jsp"/
  </definition>

Tile定義には、別のTile定義を拡張する機能があります。tiles-def.xmlファイルでは、ユーザー・フローの中でボディ部分のみが変更していることが確認できます。

9.1.3 StrutsとTilesを併用する方法

StrutsアプリケーションでTilesを使用するために、次の拡張定義をstruts-config.xmlファイルに追加しました。

  <!-- tiles plug-in -->
  <plug-in className="org.apache.struts.tiles.TilesPlugin">
    <set-property property="definitions-config" value="/WEB-INF/tiles-def.xml,/WEB-INF/tiles-def-extension.xml"/>
    <set-property property="definitions-debug" value="0"/>
    <set-property property="definitions-parser-details" value="0"/>
    <set-property property="definitions-parser-validate" value="true"/>
    <set-property property="moduleAware" value="true"/>
  </plug-in>

アクション・フォワード・エントリがstruts-config.xmlファイルにあります。アクションがTile定義baseLayoutに転送されると、Tile定義にベース・レイアウトJSPページが、対応するJSPページとともに表示されます。たとえば、次のようになります。

    <action path="/updateForgotPasswordStatus" type="com.bharosa.uio.actions.UpdateAuthStatusAction" parameter="ForgotPassword">
      <forward name="success" path="/resetPassword.do" redirect="true" />
      <forward name="challenge" path="/challengeUserForgotPassword.do" redirect="true"/>
      <forward name="registerUser" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerQuestions" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerQuestionsHTML" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerUserInfo" path="/registerUserInfo.do" redirect="true"/>
      <forward name="signon" path="signon" redirect="true"/>
    </action>

パス属性では、転送するTile定義の値を保持しています。パスの値が/registerQuestions.doの場合、ベース・レイアウトJSPページでは、tiles-def.xmlで指定したようにregisterQuestionsHTML.jspがボディとして表示されます。

<definition name="registerQuestionsHTML" extends="bharosa.uio.baseLayout">
   <put name="body" value="/registerQuestionsHTML.jsp"/
  </definition>

9.2 カスタム・ユーザー・フローとレイアウトの例

ユーザー・フローとグラフィカル・ユーザー・インタフェースのルック・アンド・フィールのカスタマイズ方法の例を、後続の項に示します。

9.2.1 ルック・アンド・フィールのカスタマイズ

グラフィカル・ユーザー・インタフェース(GUI)のルック・アンド・フィールをカスタマイズするには、カスタムJSPファイルをOAAM拡張共有ライブラリに追加し、定義をtiles-def-extension.xmlファイルに追加します。

次の例に、tiles-defs.xmlで定義したようにパスワード・ページの定義を示します。

            <definition name="password" extends="bharosa.uio.baseLayout">
                    <put name="body" value="/password.jsp"/>
                  </definition>

実行時のパスワード・ページには、ユーザーが必須資格証明を入力する際に必要となるすべてのGUI要素が動的に表示されます。

次の定義がtiles-def-extensionファイルに追加されている場合は、OAAMサーバーがpasswordページの表示を試みるすべての場所で、新規のcustomPassword.jspが使用されます。次の例では、tiles-def-extension.xmlに追加できるカスタム・パスワード・ページの定義を示しています。

            <definition name="password" extends="bharosa.uio.baseLayout">
                    <put name="body" value="/customPassword.jsp"/>
                  </definition>

9.2.2 ユーザー・ページ・フローとアクションのカスタマイズ

ユーザー・フローとアクションをカスタマイズするには、strutsアクション・クラスとstruts-config-extension.xmlファイルでのマッピングをオーバーライドします。

次の例に、struts-config.xmlに定義したように、loginアクションの定義を示します。

           <action path="/login" type="com.bharosa.uio.actions.LoginAction">
                      <forward name="success" path="/updateLoginStatus.do" redirect="true"/>
                      <forward name="loginJump" path="/loginJumpPage.jsp" redirect="true"/>
                      <forward name="password" path="password"/>
                      <forward name="challenge" path="/challengeUser.do" redirect="true"/>
                    </action>

次の例では、struts-config-extension.xmlを使用したログイン・アクションのオーバーライドに使用できる値を示しています。

           <action path="/login" type="com.bharosa.uio.actions.CustomLoginAction">
                      <forward name="success" path="/updateLoginStatus.do" redirect="true"/>
                      <forward name="loginJump" path="/customLoginJumpPage.jsp"                                              redirect="true"/>
                      <forward name="password" path="password"/>
                      <forward name="challenge" path="/customChallengeUser.do" redirect="true"/>
                    </action>

9.3 tiles-def.xmlファイル

この項では、tiles-def.xmlファイルを示しています。

<tiles-definitions>
 
  <!-- ========================================================== -->
  <!-- Master definition - Start                                  -->
  <!-- ========================================================== -->
  <!-- Main page layout used as a root for other page definitions -->
 
  <definition name="bharosa.uio.baseLayout" path="/bharosaUIOBaseLayout.jsp">
    <put name="header" value="/customHeader.jsp"/>
    <put name="footer" value="/customFooter.jsp"/>
    <put name="body" value="${body}"/>
  </definition>
 
  <definition name="bharosa.uio.messageLayout" path="/bharosaUIOMessageLayout.jsp">
    <put name="body" value="${body}"/>
  </definition>
 
  <!-- login success -->
 
  <definition name="loginSuccess" extends="bharosa.uio.baseLayout">
    <put name="body" value="/loginSuccess.jsp"/>
  </definition>
 
  <!-- login fail -->
  <definition name="loginFail" extends="bharosa.uio.baseLayout">
    <put name="body" value="/loginFail.jsp"/>
  </definition>
 
  <!-- password entry -->
  <definition name="password" extends="bharosa.uio.baseLayout">
    <put name="body" value="/password.jsp"/>
  </definition>
 
  <!-- register questions -->
  <definition name="registerInfo" extends="bharosa.uio.baseLayout">
    <put name="body" value="/registerInfo.jsp"/>
  </definition>
 
  <definition name="registerAuthenticator" extends="bharosa.uio.baseLayout">
    <put name="body" value="/registerAuthenticator.jsp"/>
  </definition>
 
  <definition name="registerQuestions" extends="bharosa.uio.baseLayout">
    <put name="body" value="/registerQuestions.jsp"/>
  </definition>
 
  <definition name="registerQuestionsHTML" extends="bharosa.uio.baseLayout">
    <put name="body" value="/registerQuestionsHTML.jsp"/>
  </definition>
 
  <definition name="registerUserInfo" extends="bharosa.uio.baseLayout">
    <put name="body" value="/registerUserInfo.jsp"/>
  </definition>
 
  <definition name="userPreferences" extends="bharosa.uio.baseLayout">
    <put name="body" value="/userPreferences.jsp"/>
  </definition>
 
  <definition name="registrationRequired" extends="bharosa.uio.baseLayout">
    <put name="body" value="/registrationRequired.jsp"/>
  </definition>
 
  <definition name="changePassword" extends="bharosa.uio.baseLayout">
    <put name="body" value="/changePassword.jsp"/>
  </definition>
 
  <definition name="forgotPassword" extends="bharosa.uio.baseLayout">
    <put name="body" value="/forgotPassword.jsp"/>
  </definition>
 
  <definition name="userInput" extends="bharosa.uio.baseLayout">
    <put name="body" value="/userInput.jsp"/>
  </definition>
 
  <!-- challenge User -->
  <definition name="challengeUser" extends="bharosa.uio.baseLayout">
    <put name="body" value="/challengeUser.jsp"/>
  </definition>
 
  <definition name="challengeUserForgotPassword" extends="bharosa.uio.baseLayout">
    <put name="body" value="/challengeUser.jsp"/>
  </definition>
 
  <definition name="challengeWait" extends="bharosa.uio.baseLayout">
    <put name="body" value="/challengeWait.jsp"/>
  </definition>
 
  <!-- qaExists -->
  <definition name="qaExists" extends="bharosa.uio.baseLayout">
    <put name="body" value="/qaExists.jsp"/>
  </definition>
 
  <!-- register qa done -->
  <definition name="questRegistered" extends="bharosa.uio.baseLayout">
    <put name="body" value="/registerQAdone.jsp"/>
  </definition>
 
  <!-- signon -->
  <definition name="signon" extends="bharosa.uio.baseLayout">
    <put name="body" value="/securityProfile.jsp"/>
  </definition>
 
  <!-- messages -->
  <definition name="message" extends="bharosa.uio.messageLayout">
    <put name="body" value="/message.jsp"/>
  </definition>
</tiles-definitions>

9.4 Struts構成ファイル

この項では、struts-config.xmlファイルを示しています。

<struts-config>
 
  <!-- ========== Global Forward Definitions ============================== -->
 
  <global-forwards>
    <forward name="session_expired" path="/error.do?action=session_expired" redirect="true"/>
    <forward name="emptyLoginId" path="/error.do?action=empty" redirect="true"/>
    <forward name="fail" path="/error.do?action=fail" redirect="true"/>
    <forward name="invalid_user" path="/error.do?action=invalid_user" redirect="true"/>
    <forward name="error" path="/error.do?action=error" redirect="true"/>
    <forward name="block" path="/error.do?action=block" redirect="true"/>
    <forward name="challenge_block" path="/error.do?action=block" redirect="true"/>
    <forward name="cookieDisabled" path="/error.do?action=cookieDisabled" redirect="true"/>
    <forward name="accessDenied" path="/error.do?action=accessDenied" redirect="true"/>
    <forward name="invalid_request" path="/error.do?action=accessDenied" redirect="true"/>
    <forward name="user_disabled" path="/error.do?action=disabled" redirect="true"/>
    <forward name="wrong_answer" path="/error.do?action=wrong_answer" redirect="true"/>
    <forward name="login" path="/error.do" redirect="true"/>
  </global-forwards>
 
  <!-- ========== Action Mapping Definitions ============================== -->
  <action-mappings>
 
    <!-- action mappings for login -->
 
    <action path="/login" type="com.bharosa.uio.actions.LoginAction">
      <forward name="success" path="/updateLoginStatus.do" redirect="true"/>
      <forward name="loginJump" path="/loginJumpPage.jsp" redirect="true"/>
      <forward name="password" path="password"/>
      <forward name="passwordFT" path="password"/>
      <forward name="challenge" path="/challengeUser.do" redirect="true"/>
    </action>
 
    <action path="/loginFail" type="com.bharosa.uio.actions.LoginFailAction">
      <forward name="success" path="loginFail"/>
    </action>
 
    <action path="/activity" type="com.bharosa.uio.actions.ActivityAction">
      <forward name="success" path="loginSuccess" redirect="true"/>
    </action>
 
    <!-- validate password -->
 
    <action path="/password" type="com.bharosa.uio.actions.PasswordAction">
      <forward name="success" path="/exit.do"/>
      <forward name="invalid_user" path="/updateLoginStatus.do" />
      <forward name="noproxy" path="/updateLoginStatus.do"/>
      <forward name="resetPassword" path="/expiredPassword.do" redirect="true" />
    </action>
 
    <action path="/updateLoginStatus" type="com.bharosa.uio.actions.UpdateAuthStatusAction">
      <forward name="success" path="/exit.do"/>
      <forward name="challenge" path="/challengeUser.do" redirect="true"/>
      <forward name="registerUser" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerAuthenticator" path="/registerImage.do" redirect="true"/>
      <forward name="registerQuestions" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerQuestionsHTML" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerUserInfo" path="/registerUserInfo.do" redirect="true"/>
      <forward name="signon" path="signon" redirect="true"/>
    </action>
 
    <action path="/updateForgotPasswordStatus" type="com.bharosa.uio.actions.UpdateAuthStatusAction" parameter="ForgotPassword">
      <forward name="success" path="/resetPassword.do" redirect="true" />
      <forward name="challenge" path="/challengeUserForgotPassword.do" redirect="true"/>
      <forward name="registerUser" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerQuestions" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerQuestionsHTML" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerUserInfo" path="/registerUserInfo.do" redirect="true"/>
      <forward name="signon" path="signon" redirect="true"/>
    </action>
 
      <action path="/validateTrx" type="com.bharosa.uio.actions.ValidateTrxAction">
          <forward name="success" path="/exit.do"/>
          <forward name="challenge" path="/challengeUserTrx.do" redirect="true"/>
      </action>
 
    <action path="/flashFingerprint" type="com.bharosa.uio.actions.FlashFingerprintAction">
       <forward name="success" path="/flashFingerprint.jsp"/>
     </action>
 
      <!-- action mappings for logout -->
 
    <action path="/logout" type="com.bharosa.uio.actions.LogoutAction">
      <forward name="success" path="/loginPage.jsp" />
    </action>
 
    <!-- action mappings for signon -->
 
    <action path="/signon" type="com.bharosa.uio.actions.SignOnAction">
      <forward name="securityProfile" path="/securityProfile.jsp" redirect="true"/>
      <forward name="securityDone" path="/activity.do" redirect="true"/>
    </action>
 
    <!-- action mappings for security QA -->
 
    <action path="/registerQuestions" type="com.bharosa.uio.actions.RegisterQuestionsAction">
      <forward name="qaExists" path="qaExists" redirect="true"/>
      <forward name="registerAuthenticator" path="registerAuthenticator"/>
      <forward name="registerQuestions" path="registerQuestions"/>
      <forward name="registerQuestionsHTML" path="registerQuestionsHTML"/>
      <forward name="registerInfo" path="registerInfo"/>
      <forward name="registerUserInfo" path="registerUserInfo"/>
      <forward name="skip" path="/exit.do"/>
      <forward name="success" path="/exit.do"/>
    </action>
 
    <action path="/registerImage" type="com.bharosa.uio.actions.RegisterQuestionsAction" parameter="RegisterImage">
      <forward name="registerAuthenticator" path="registerAuthenticator"/>
      <forward name="success" path="/exit.do"/>
    </action>
 
    <action path="/registerUserInfo" type="com.bharosa.uio.actions.RegisterQuestionsAction" parameter="RegisterUserInfo">
      <forward name="registerUserInfo" path="registerUserInfo"/>
      <forward name="success" path="/exit.do"/>
    </action>
 
    <action path="/userPreferences" type="com.bharosa.uio.actions.RegisterQuestionsAction" parameter="UserPreferences">
      <forward name="registerAuthenticator" path="userPreferences"/>
      <forward name="registerInfo" path="userPreferences"/>
      <forward name="registerQuestions" path="registerQuestions"/>
      <forward name="registerQuestionsHTML" path="registerQuestionsHTML"/>
      <forward name="registerUserInfo" path="registerUserInfo" />
      <forward name="changePassword" path="/changePassword.do" />
      <forward name="success" path="userPreferences"/>
      <forward name="registrationRequired" path="registrationRequired"/>
      <forward name="exit" path="/exit.do" />
    </action>
 
    <action path="/changePassword" type="com.bharosa.uio.actions.ChangePasswordAction">
      <forward name="changePassword" path="changePassword" />
      <forward name="success" path="/userPreferences.do" redirect="true" />
      <forward name="exit" path="/exit.do" />
    </action>
 
    <action path="/resetPassword" type="com.bharosa.uio.actions.ChangePasswordAction" parameter="ResetPassword">
      <forward name="changePassword" path="changePassword" />
      <forward name="success" path="/exit.do" />
      <forward name="updateStatus" path="/updateLoginStatus.do" redirect="true" />
    </action>
 
    <action path="/expiredPassword" type="com.bharosa.uio.actions.ChangePasswordAction" parameter="ExpiredPassword">
      <forward name="changePassword" path="changePassword" />
      <forward name="success" path="/exit.do" />
      <forward name="updateStatus" path="/updateLoginStatus.do" redirect="true" />
    </action>
 
    <action path="/forgotPassword" type="com.bharosa.uio.actions.ForgotPasswordAction">
      <forward name="forgotPassword" path="forgotPassword" />
      <forward name="challenge" path="/challengeUserForgotPassword.do" />
      <forward name="success" path="/exit.do" />
      <forward name="noproxy" path="/updateForgotPasswordStatus.do" />
    </action>
 
    <action path="/getUserInput" type="com.bharosa.uio.actions.UserInputAction">
      <forward name="showAuthenticator" path="userInput" />
      <forward name="success" path="/exit.do" />
    </action>
 
 
    <action path="/userPreferencesDone" type="com.bharosa.uio.actions.UserPreferencesDoneAction">
      <forward name="success" path="/exit.do"/>
      <forward name="exit" path="/exit.do" />
    </action>
    <!-- action mappings for challenge user -->
 
    <action path="/challengeUser" type="com.bharosa.uio.actions.ChallengeUserAction">
      <forward name="success" path="/exit.do" />
      <forward name="challenge" path="challengeUser"/>
      <forward name="registerUser" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerAuthenticator" path="/registerImage.do" redirect="true"/>
      <forward name="registerQuestions" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerQuestionsHTML" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerUserInfo" path="/registerUserInfo.do" redirect="true"/>
      <forward name="wait" path="challengeWait"/>
    </action>
 
    <action path="/challengeUserTrx" type="com.bharosa.uio.actions.ChallengeUserAction" parameter="transaction">
      <forward name="success" path="/exit.do" />
      <forward name="challenge" path="challengeUser"/>
      <forward name="registerUser" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerAuthenticator" path="/registerImage.do" redirect="true"/>
      <forward name="registerQuestions" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerQuestionsHTML" path="/registerQuestions.do" redirect="true"/>
      <forward name="registerUserInfo" path="/registerUserInfo.do" redirect="true"/>
      <forward name="wait" path="challengeWait"/>
    </action>
 
    <action path="/challengeUserForgotPassword" type="com.bharosa.uio.actions.ChallengeUserAction" parameter="ForgotPassword">
      <forward name="success" path="/resetPassword.do" redirect="true"/>
      <forward name="forgotPassword" path="forgotPassword" />
      <forward name="challenge" path="challengeUserForgotPassword"/>
      <forward name="wait" path="challengeWait"/>
    </action>
 
    <action path="/changeUserId" type="com.bharosa.uio.actions.ChangeUserNameAction">
      <forward name="success" path="/exit.do" />
    </action>
 
    <!-- action mappings for message -->
 
    <action path="/message" type="com.bharosa.uio.actions.MessageAction">
      <forward name="success" path="message"/>
    </action>
 
    <action path="/exit" type="com.bharosa.uio.actions.ExitAction">
      <forward name="success" path="/empty.jsp"/>
    </action>
 
    <action path="/error" type="com.bharosa.uio.actions.ErrorAction">
      <forward name="login" path="/loginPage.jsp" redirect="true" />
    </action>
 
  </action-mappings>
 
  <!--The Tiles Request Processor for processing all the Tile requests-->
  <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
 
  <!-- message resources -->
  <message-resources parameter="proxyweb" null="false"/>
 
  <!-- tiles plug-in -->
  <plug-in className="org.apache.struts.tiles.TilesPlugin">
    <set-property property="definitions-config" value="/WEB-INF/tiles-def.xml,/WEB-INF/tiles-def-extension.xml"/>
    <set-property property="definitions-debug" value="0"/>
    <set-property property="definitions-parser-details" value="0"/>
    <set-property property="definitions-parser-validate" value="true"/>
    <set-property property="moduleAware" value="true"/>
  </plug-in>
 
</struts-config>