CodeZine(コードジン)

特集ページ一覧

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

第4回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/11/26 14:00

目次

コントロール利用の流れ

 では、ソースコードを見ていきましょう。ここでは、最初にいくつかのprivateフィールドが用意されています。「Form」「TextField」「Submit」「String」といったものです。これらのうち、Stringを除いた3つが「コントロール」のクラスを保管するためのものです。これらは、それぞれフォーム、入力フィールド、送信ボタンのコントロールクラスとなります。

 続いて、初期化処理です。先のサンプルではコンストラクタを使いましたが、今回はあわせて「onInit」というメソッドを使ってみました。これは、Pageインスタンスが作成されたとき最初に呼び出されるメソッドで、Pageの初期化処理を用意するのに用いられます。今回は各コントロールクラスのインスタンスを作成した後、ここで表示メッセージの初期化をしています。

 さて、今回のフォーム作成の部分を見てみると、以下のようになっていますね。

form = new Form("form");
input = new TextField("input","入力:");
submit = new Submit("submit", "送信");

 これらのnewしている引数などをもう少し整理すると、次のようになります。

new Form( 名前 )
new TextField( 名前 , ラベル )
new Submit( 名前 , 表示テキスト )

 Formクラスは<form>タグを生成するコントロールです。これは名前だけ引数に指定しておきます。<form>タグでは、methodactionなどといった属性がいろいろと用意されていますが、Formコントロールでは、これらの指定は不要です。

 TextFieldは、<input type="text">タグによる入力フィールドを生成するコントロールです。これは名前の他、第2引数にラベルを指定しています。このラベルは、入力フィールドの左側に表示されるもので、この項目の内容を示すのに使います。

 これらのフォームから送信されたときの処理は、「onPost」というメソッドで行っています。これは文字どおり、POSTでアクセスされた際に呼び出されるメソッドです。Formコントロールを使って作成されたフォームは、送信ボタンで送信するとPOSTで自身に送られるようになっているので、ここに処理を用意すればよいわけです。

 ここでは、input(TextFieldインスタンス)の「getValue」を呼び出しています。これは入力されたテキストを取得するもので、これを利用してmsgフィールドに表示メッセージを設定しています。

テンプレートへの出力は?

 このメッセージはどこで表示されているのでしょうか。実は、メッセージを表示する処理はありません。Apache Clickでは、Pageクラスにあるpublicフィールドは、すべて自動的にテンプレートで使えるようになります。ここではpublic String msgとして表示メッセージを保管するようにしているので、そのままテンプレートに$msgと書けばmsgの内容が出力されるのです。

 これはStringなどの変数だけでなく、フォームなどのオブジェクトについても同様のことが言えます。ここではFormそのものは作成していますが、これをどこかに組み込むような作業はされていません。ただFormフィールドを用意しておくだけで、テンプレート側の$formにフォームの内容が出力されていたのです。

 では、publicにせず、手作業でテンプレートに値を渡したいときはどうすればよいのでしょうか。この場合には、フィールドをpublicではなくprivateなどに戻しておき、初期化の際に次のようなメソッドを使って必要な値をPageインスタンスに追加します。

addModel( 変数名 , 値 );
addControl( 変数名 , コントロール );

 コントロール類は、addControlで組み込みます。その他の一般的な変数は、addModelで組み込みます。こちらは、既に先ほどのサンプルで使いましたね。明示的に値を設定する場合に、これらのメソッドが使われます。逆にいえば、特に理由がないなら、ただ単にpublicフィールドとして値をクラスに保管しておけばいい、ということですね。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2009/11/26 19:18 ※onInit関連の記述に誤りがありました。リストおよび本文を修正致しました。

バックナンバー

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

もっと読む

著者プロフィール

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

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

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5