SHOEISHA iD

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

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

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

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

第2回

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

IndexPageクラスの作成

 細かい説明は後で改めて行うとして、まずはIndexPageを完成させましょう。残るはIndexPage.javaです。これも次のようにソースコードを作成してください。

package jp.tuyano;

import java.util.*;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.*;
import org.apache.wicket.markup.html.form.*;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.*;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.*;
import org.apache.wicket.validation.validator.*;

public class IndexPage extends WebPage {
    private CompoundPropertyModel<WebPage> formmodel;
    private Model<String> namemodel;
    private Model<String> cmntmodel;
    private static ArrayList<String> datalist = new ArrayList<String>();;
    private PageableListView<String> list;
    
    public IndexPage(){
        Label title = new Label("title","Wicket Sample");
        this.add(title);
        this.add(new FeedbackPanel("error"));
        Link<String> link = new Link<String>("link"){
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick() {
                this.setResponsePage(OtherPage.class);
            }
            
        };
        this.add(link);
        formmodel = new CompoundPropertyModel<WebPage>(this);
        Form<WebPage> form1 = new Form<WebPage>("form1",formmodel);
        namemodel = new Model<String>();
        TextField<String> field0 = new TextField<String>("Name",namemodel);
        field0.setRequired(true);
        field0.add(new StringValidator.MinimumLengthValidator(3));
        form1.add(field0);
        cmntmodel = new Model<String>();
        TextArea<String> area0 = new TextArea<String>("Comment",cmntmodel);
        area0.setRequired(true);
        area0.add(new StringValidator.MaximumLengthValidator(100));
        form1.add(area0);
        Button submit = new Button("submit"){
            private static final long serialVersionUID = 1L;

            @Override
            public void onSubmit(){
                submitNow();
            }
        };
        form1.add(submit);
        this.add(form1);
        list = new PageableListView<String>("list",datalist,5){
            private static final long serialVersionUID = 1L;

            @Override
            protected void populateItem(ListItem<String> item) {
                String s = item.getModelObject();
                item.add(new Label("comment",s));
            }
        };
        this.add(list);
        this.add(new PagingNavigator("navigate", list));
    }
    
    public void submitNow(){
        String name = namemodel.getObject();
        String cmnt = cmntmodel.getObject();
        datalist.add(0,cmnt + " (" + name + ")");
        cmntmodel.setObject("");
        list.modelChanged();
        WicSample app = (WicSample)this.getApplication();
        app.setApp_msg(cmnt + " (" + name + ")");
    }
}

 いろいろと機能を詰め込んだため少々リストも長くなりましたが、基本的な構成に違いはありません。コンストラクタで必要なコンポーネント類を作成して組み込み、submitNowでフォーム送信時の処理を用意するという形になります。

 ここまでできあがったところで、実際にプロジェクトを実行して動かしてみましょう。名前とコメントを入力するフォームが現れるので、これらを記入して送信してみてください。フォームの下に送ったデータが表示されます。

複数のブラウザからアクセスしフォームを送信してみると、このように送られた内容がすべて整理され表示される
複数のブラウザからアクセスしフォームを送信してみると、このように送られた内容がすべて整理され表示される

次のページ
データの共有とクラスフィールド

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4460 2009/10/29 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング