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