いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

Tapestry奮闘記-0020 (独自のエラーページの作成)

Tapestryにて、存在しないページ名などを指定された際に、デフォルトだと
Tapestryのエラー画面が表示されます。

これを独自のエラーページを表示するようにするには、
以下のステップを行います。

  1. エラーページのHTMLテンプレートファイルを作成
  2. エラーページのpageファイルを作成
  3. エラーページクラスを作成
  4. アプリケーション仕様ファイルに登録

ひとつずついきます。

まずHTMLテンプレート。これは、通常のページの作成と同じです。
[HTMLテンプレート]

<html>
    <head>
        <title>My Exception Page.</title>
    </head>
    <body>
        This is My Exception Page...............
    </body>
</html>

次は、pageファイルです。
これもいつもと同じように作成します。
ただし、必要なプロパティがひとつだけあります。

  • exceptionプロパティ

このプロパティをpageファイルかjavaクラスにて定義しなければ
なりません。

[pageファイル]

<?xml version="1.0" encoding="Windows-31J"?>
<!DOCTYPE page-specification
      PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
      "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">

<page-specification class="gsf.samples.tapestry.MyException">
</page-specification>

次は、ページクラス。
ページクラスには、pageファイルにてプロパティを指定していない場合、
以下の名称のGetterとSetterが必要になります。

  • getException()
  • setException(Throwable throwable)

上記のメソッドが存在しない場合、Tapestryがエラーを吐きます。

[ページクラス]

package gsf.samples.tapestry;

import org.apache.tapestry.html.*;

public class MyException extends BasePage{

    private Throwable exception;

    public Throwable getException() {
        return exception;
    }

    public void setException(Throwable exception) {
        this.exception = exception;
    }
}

最後に、アプリケーション仕様ファイルに定義します。
エラーページは、Exceptionという名称でページ定義しなければなりません。

    <!--
        エラーページ定義

        Tapestryでエラーが発生した場合、以下で指定されたページが
        表示されるようになる。
    -->
    <page name="Exception" specification-path="MyException.page"/>

これで設定は完了です。
後は、画面を表示した後に、サービス名を故意に変更してサブミットなどを
起こすと、上記で設定したエラーページが表示されるはずです。

以下、参考にしたページです。
http://tapestry-tutorial.cloudnine.net.nz/pages-example.html