SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

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

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

第4回


コントロール利用の流れ

 では、ソースコードを見ていきましょう。ここでは、最初にいくつかの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フィールドとして値をクラスに保管しておけばいい、ということですね。

次のページ
その他のコントロールを使う

修正履歴

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4555 2009/11/26 19:26

イベント

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

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

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

メールバックナンバー