ZUMLページ読み込み中に処理できない例外が起こった場合、ウェブサーバーによって、直接処理されます。
つまり、JSPといったほかのページを処理するのと何も変わりません。
デフォルトでは、ウェブサーバーはエラーメッセージとそのトレースを表示します。
以下のようにINF/web.xmlの中でエラーページを指定することで、エラー処理をカスタマイズできます。より詳しくはJava Servlet Specificaiton を参照ください。
<!-- web.xml --> <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/WEB-INF/sys/error.zul</location> </error-page>
ページ読み込み中にエラーが発生したら、ウェブサーバーはプログラマーが指定したエラーページ/error/error.zulに転送します。
転送するときに、ウェブサーバーはリクエスト属性を送信し、何が起こったかを表示します。属性は以下のようです。
Request Attribute |
Type |
---|---|
javax.servlet.error.status_code |
java.lang.Integer |
javax.servlet.error.exception_type |
java.lang.Class |
javax.servlet.error.message |
java.lang.String |
javax.servlet.error.exception |
java.lang.Throwable |
javax.servlet.error.request_uri |
java.lang.String |
javax.servlet.error.servlet_name |
java.lang.String |
これらの属性を使用して、エラーページをカスタマイズすることができます。例えば、
<window title="Error ${requestScope['javax.servlet.error.status_code']}"> Cause: ${requestScope['javax.servlet.error.message']} </window>
【ヒント】:エラーページはどんなサーブレットにでもなることができます。ZULのほかに、JSPまたは他のお好みのものを何でも使用できます。
【ヒント】:転送した後、エラーページは主なページとして表示されます。つまり、プログラマーはモーダルを指定したり、メインウィンドウにオーバーラップさせたりする必要はありません。