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でフォーム送信時の処理を用意するという形になります。
ここまでできあがったところで、実際にプロジェクトを実行して動かしてみましょう。名前とコメントを入力するフォームが現れるので、これらを記入して送信してみてください。フォームの下に送ったデータが表示されます。

