Tapestryにて、存在しないページ名などを指定された際に、デフォルトだと
Tapestryのエラー画面が表示されます。
これを独自のエラーページを表示するようにするには、
以下のステップを行います。
- エラーページのHTMLテンプレートファイルを作成
- エラーページのpageファイルを作成
- エラーページクラスを作成
- アプリケーション仕様ファイルに登録
ひとつずついきます。
まず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