今天我们来学习一下这样的的一个界面,一个表单,例举相应的对象的属性。
其实现的类如下所示。
public class PersonListDetails extends WebPage {
private Form form;
private DropDownChoice<Person> personsList;
public PersonListDetails() {
Model<Person> listModel = new Model<Person>();
ChoiceRenderer<Person> personRender = new ChoiceRenderer<Person>(){
@Override
public Object getDisplayValue(Person person) {
return person.getName() + " " + person.getSurname();
}
};
personsList = new DropDownChoice<Person>("persons", listModel, personsPojo(),personRender);
personsList.add(new FormComponentUpdatingBehavior());
add(personsList);
form = new Form("form", new CompoundPropertyModel<Person>(listModel));
form.add(new TextField("name"));
form.add(new TextField("surname"));
form.add(new TextField("address"));
form.add(new TextField("email"));
add(form);
}
private static List<Person> personsPojo() {
List<Person> persons = new ArrayList<Person>();
Person person = new Person("John", "Smith");
person.setAddress("Corner street");
person.setEmail("john.smith@gmail.com");
persons.add(person);
person = new Person("Jill", "Smith");
person.setAddress("Main street");
person.setEmail("jill.smith@gmail.com");
persons.add(person);
person = new Person("Tim", "Spencer");
person.setAddress("Second street");
person.setEmail("tim.spencer@gmail.com");
persons.add(person);
return persons;
}
}
对应的html界面,如下所示
<html xmlns:wicket="http://wicket.apache.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
List of persons
<select wicket:id="persons"></select>
<br />
<br />
<form wicket:id="form">
<div style="display: table;">
<div style="display: table-row;">
<div style="display: table-cell;">Name:</div>
<div style="display: table-cell;">
<input type="text" wicket:id="name" />
</div>
</div>
<div style="display: table-row;">
<div style="display: table-cell;">Surname:</div>
<div style="display: table-cell;">
<input type="text" wicket:id="surname" />
</div>
</div>
<div style="display: table-row;">
<div style="display: table-cell;">Address:</div>
<div style="display: table-cell;">
<input type="text" wicket:id="address" />
</div>
</div>
<div style="display: table-row;">
<div style="display: table-cell;">Email:</div>
<div style="display: table-cell;">
<input type="text" wicket:id="email" />
</div>
</div>
</div>
<input type="submit" value="Save" />
</form>
</body>
</html>
我们来看一下person的定义
public class Person implements Serializable{
private String name;
private String surname;
private String address;
private String email;
private Person spouse;
private List<Person> children;
public Person(String name, String surname) {
super();
this.name = name;
this.surname = surname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Person getSpouse() {
return spouse;
}
public void setSpouse(Person spouse) {
this.spouse = spouse;
}
public List<Person> getChildren() {
return children;
}
public void setChildren(List<Person> children) {
this.children = children;
}
}