SHOEISHA iD

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

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

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

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

Javaで軽快に使える「軽量フレームワーク」特集
~Apache Wicketで簡単Webアプリ作成(1)

第1回

IndexPage.htmlの作成

 では、Webページを作成していきましょう。Webページは、HTMLテンプレートと「WebPage」というクラスの2つで構成されます。まずは、HTMLテンプレートから作りましょう。これは「src」のjp.tuyanoパッケージ内に「IndexPage.html」というファイル名で作成をします。テンプレートは、対応するWebPageクラスと同じパッケージ内に、同じ名前のファイルとして作成をします。今回は、IndexPageというページを作りますので、ファイル名は「IndexPage.html」となるわけです。

<?xml version="1.0" encoding="UTF-8"?>
<html
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:wicket="http://wicket.apache.org/">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Index Page</title>
        <style type="text/css">
        h1 {
            background-color: #CCAAFF;
            border-style: none none solid solid;
            border-width: 0px 0px 2px 5px;
            padding: 1px 5px 1px 5px;
            font-size: 14pt;
        }
        </style>
    </head>
    <body>
        <h1 wicket:id="title">Wicket Sample</h1>
        <span wicket:id="border">
        <p wicket:id="label">loaded...</p>
        </span>
    </body>
</html>

 見れば分かるように、ごく普通のHTMLのソースコードです。1つだけ違っているのは、いくつかのタグに「wicket:id」という属性が追加されていることでしょう。これは、WebPageクラス側で用意するコンポーネントを割り当てるためのID情報です。アプリケーションクラスでgetConfigurationTypeをDEPLOYMENTにすると、これらのID情報は実際にWebブラウザに出力されるページからはすべて取り除かれます。

 ここでは、"title""border""label"といったIDがタグに指定されています。これらのIDに、WebPageクラスからWicketのコンポーネントが割り当てられていくのです。

IndexPageクラスの作成

 続いて、WebPageクラスを作成しましょう。これは、「src」内のjp.tuyanoパッケージに「IndexPage.java」というソースコードファイルとして作成します。ソースコードは次のとおりです。

package jp.tuyano;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.*;
import org.apache.wicket.markup.html.border.*;

public class IndexPage extends WebPage {
    
    public IndexPage(){
        Label title = new Label("title","Wicket Sample");
        this.add(title);
        BoxBorder border = new BoxBorder("border");
        this.add(border);
        Label label = new Label("label","This is test.");
        border.add(label);
    }
}

 WebPageクラスは、org.apache.wicket.markup.html.WebPageを継承して作成します。ここでは、コンストラクタの中で、ページ内に必要なコンポーネントを用意しています。今回作成しているのは、「Label」が2つと「BoxBorder」です。

 Labelは、文字どおり、テキストを表示するコンポーネントです。これは次のようにしてインスタンスを作成します。

new Label( ID名 , 表示する値 )

 第1引数には、HTMLテンプレートでwicked:idに用意した値が指定されます。また第2引数は、ここではStringが値として渡されますが、通常は値を管理する「Model」と呼ばれるものが用いられます(Modelについてはこの後で改めて登場します)。

 BoxBorderは、四角い枠(ボーダー)を表示するものです。これも、引数にID名を指定してインスタンスを作成します。BoxBorderは、その中にコンポーネントを組み込むことができます。コンポーネントの組み込みは「add」というメソッドを使います。コンストラクタの処理を見てみると、1つ目のLabelはthisにaddし、2つ目のLabelはBoxBorderにaddし、そのBoxBorderをまたthisにaddする、という構造になっていることが分かります。

 これで必要なファイル類は揃いました。プロジェクトを見ると、以下の図のようにファイルが構成されているのが分かります。

プロジェクトのファイル構成
プロジェクトのファイル構成

次のページ
サンプルプロジェクトの実行

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4459 2009/10/22 14:00

おすすめ

イベント

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

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

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

メールバックナンバー