SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
低い学習コストを重視した「Apache Click」 (2)

第5回


  • X ポスト
  • このエントリーをはてなブックマークに追加

エラー発生時の対応を考える

 続いて、エラー発生時の対応についてです。Apache Clickでは、実行中にエラーが発生すると、独自のエラーページが表示されます。これはApache Clickに最初から用意されているものです。これを独自の表示にカスタマイズしたい、ということもあるでしょう。

 Apache Clickでは、実行時にエラーが発生すると、org.apache.click.util.ErrorPageというPageクラスによるWebページにジャンプします。これはclick/error.htmというURLにマッピングされています。従って、このページを独自に作成して使用するように変更すれば、エラー発生時の対応を自身で作成できます。

 まず、click.xmlを開き、エラー時のページ情報を追加しておきましょう。次のように修正してください。

<?xml version="1.0" encoding="UTF-8"?>
<click-app charset="UTF-8">
    <pages package="jp.codezine.click">
        <page path="click/error.htm" classname="ErrorPage"/>
    </pages>
</click-app>

 ここでは、<pages>内に新たに<page>タグが追加されていますね。path="click/error.htm"に"ErrorPage"というクラスを設定しています。これにより、何らかの例外が発生したときにはclick/error.html"にアクセスするようになっています。これらにはそれぞれPageクラスとテンプレートを用意します。

error.htmの作成

 では、エラーページを作成しましょう。まずはerror.htmテンプレートファイルからです。これは、次のようにしておきましょう。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Error</title>
        <link rel="stylesheet" type="text/css" href="style.css"></link>
        $imports
    </head>
    <body>
        <h1>Error Page</h1>
        <p>※何らかの問題が発生しました。管理者までお問い合わせください。</p>
        <p>メッセージ:$msg</p>
    </body>
</html>

 ごくシンプルなものです。$msgとして、Pageで発生した例外のメッセージを表示するようにしてあります。

ErrorPageクラスの作成

 続いて、Errorクラスの作成です。これもjp.codezine.clickパッケージに「ErrorPage.java」とソースコードファイルを作成し、次のように記述をしましょう。

package jp.codezine.click;

public class ErrorPage extends org.apache.click.util.ErrorPage {
    public String msg="";

    @Override
    public void onInit() {
        super.onInit();
        String msg = this.getError().getLocalizedMessage();
    }

    @Override
    public String getTemplate() {
        return "/error.htm";
    }

}
図9 実行途中で例外が発生すると、このページにジャンプする。
図9 実行途中で例外が発生すると、このページにジャンプする。

 Pageクラスで何らかの例外が発生すると、このWebページにジャンプし、エラーメッセージが表示されます。

 エラー時に表示されるPageクラスは、org.apache.click.util.ErrorPageとして用意されています。独自にページを作成する場合は、このページを継承してPageクラスを作成するのが良いでしょう。

 ここでは、「getTemplate」というメソッドをオーバーライドしています。これは、このPageインスタンスで使用するテンプレートを得る際に呼び出されるもので、ここで"/error.htm"を返すことで、error.htmがテンプレートとしてロードされるようになります。

まとめ

 今回は、Webアプリケーションを使う上で必要となるさまざまな機能を紹介していきました。だいぶApache Clickによる開発スタイルがわかってきたことでしょう。Apache Clickは、コンポーネント指向の強いフレームワークです。さまざまな機能の実装は、「用意されている部品の中からどれを利用すればいいか」「どういう機能を呼び出せばいいか」といったことを中心に考えていくことになります。

 中には、DateFieldのように2.1にならないと本来の機能が発揮できないものや、リダイレクト時のMap受け渡しのように何らかの処理をしないと日本語で問題が起こるものなどもあります。Apache Clickは、まだ発展途上のフレームワークですので、バージョンアップにより仕様が変更されたりすることもあります。開発元サイトをこまめにチェックするようにしましょう。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4556 2014/04/17 09:39

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング