Wicket框架基础(二)
pizza Application Sample
本节采用David R. Heffelfinger 撰写的 A First Look at the Wicket Framework一文做一个实际的例子。
本文档需要的环境
一、在netbeans6.5中建立wickt应用程序
1、 建立一个“web应用程序”。在选择服务器(如tomcat6.0)和javaEE版本(如5.0规范)之后,选择框架“wicket1.4”。
把Wicket Name Page修改为:WicketTestPage,点击“完成”。
2、 编辑文件WicketTestPage.html:
cellpadding="0" cellspacing="0">
wicket:id="sausage" type="checkbox" /> Onions wicket:id="onions" type="checkbox" /> Green Peppers wicket:id="greenPeppers" type="checkbox" /> name="Submit" type="submit" />
Crust:
Toppings:
Pepperoni Sausage
Comments:
3、 编辑文件WicketTestPage.java:
public class WicketTestPage extends WebPage
{
PizzaForm pizzaForm = new PizzaForm("pizzaForm");
public WicketTestPage()
{
super();
add(pizzaForm);
}
}
4、新建java类,命名为PizzaForm。
5、 编辑文件PizzaForm.java:
public class PizzaForm extends Form
{
private DropDownChoice crustDropDown;
private CheckBox pepperoniCheckBox = new CheckBox("pepperoni");
private CheckBox sausageCheckBox = new CheckBox("sausage");
private CheckBox onionsCheckBox = new CheckBox("onions");
private CheckBox greenPeppersCheckBox = new CheckBox("greenPeppers");
private TextField commentsTextField = new TextField("comments");
public PizzaForm(String id)
{
super(id);
PizzaModel pizzaModel = new PizzaModel();
setModel(new CompoundPropertyModel(pizzaModel));
crustDropDown = new DropDownChoice(
"crust",new PropertyModel(pizzaModel, "crust"), Arrays
.asList(new CrustType[]
{ new CrustType("Thin & Crispy"),
new CrustType("Hand Tossed"),
new CrustType("Pan Pizza") }),
new ChoiceRenderer("text", "id"));
add(crustDropDown);
add(pepperoniCheckBox);
add(sausageCheckBox);
add(onionsCheckBox);
add(greenPeppersCheckBox);
add(commentsTextField);
}
}
6、新建java 类,命名PizzaModel;
7、 编辑PizzaModel.java:
public class PizzaModel implements Serializable
{
private String crust;
private boolean pepperoni;
private boolean sausage;
private boolean onions;
private boolean greenPeppers;
private String comments;
public String getComments()
{
return comments;
}
public void setComments(String comments)
{
this.comments = comments;
}
public String getCrust()
{
return crust;
}
public void setCrust(String crust)
{
this.crust = crust;
}
public boolean getGreenPeppers()
{
return greenPeppers;
}
public void setGreenPeppers(boolean greenPeppers)
{
this.greenPeppers = greenPeppers;
}
public boolean getOnions()
{
return onions;
}
public void setOnions(boolean onions)
{
this.onions = onions;
}
public boolean getPepperoni()
{
return pepperoni;
}
public void setPepperoni(boolean pepperoni)
{
this.pepperoni = pepperoni;
}
public boolean getSausage()
{
return sausage;
}
public void setSausage(boolean sausage)
{
this.sausage = sausage;
}
}
8、新建java类CrustType,编辑CrustType.java如下:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.myapp.wicket;
import java.io.Serializable;
public class CrustType implements Serializable
{
String id;
String text;
public CrustType()
{
super();
}
public CrustType(String crustName)
{
setId(crustName);
setText(crustName);
}
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getText()
{
return text;
}
public void setText(String value)
{
this.text = value;
}
@Override
public String toString()
{
return getText();
}
}
9、修改PizzaForm.java,添加方法onSubmit():
@Override
protected void onSubmit()
{
PizzaModel pizzaModel = (PizzaModel) getModelObject();
setResponsePage(new WicketTestConfPage(pizzaModel));
}
9、 新建wicket page,命名为WicketTestConfPage;
10、 编辑WicketTestConfPage.html文件如下:
cellpadding="0" cellspacing="0">
Crust:
Hello
Toppings:
Pepperoni:
Sausage: Onions: wicket:id="onions"> Green Peppers: wicket:id="greenPeppers">
Comments:
11、 编辑WicketTestConfPage.java文件如下:
public class WicketTestConfPage extends WebPage
{
public WicketTestConfPage(PizzaModel pizzaModel)
{
super();
add(new Label("crust", pizzaModel.getCrust()));
add(new Label("pepperoni", new Boolean(pizzaModel.getPepperoni())
.toString()));
add(new Label("sausage", new Boolean(pizzaModel.getSausage()).toString()));
add(new Label("onions", new Boolean(pizzaModel.getOnions()).toString()));
add(new Label("greenPeppers", new Boolean(pizzaModel.getGreenPeppers())
.toString()));
add(new Label("comments", pizzaModel.getComments()));
}
}
12、 F6,运行主项目,WicketTestPage页面如下:
13、 在表单中输入任意内容,点submit提交,页面转至: