THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
import wicket.markup.html.WebPage; import wicket.markup.html.panel.FeedbackPanel; import wicket.markup.html.form.Form; import wicket.markup.html.form.TextField; import wicket.markup.html.form.Button; import wicket.markup.html.link.Link; import wicket.markup.html.basic.Label; import wicket.markup.html.list.ListView; import wicket.markup.html.list.ListItem; import wicket.model.CompoundPropertyModel; import wicket.IFeedback; import java.util.List; class PersonList extends WebPage { {panel} private List peopleList; {panel} {panel} public PersonList(final List peopleList) { this.peopleList = peopleList; this.peopleList.add(new Person("Lila")); this.peopleList.add(new Person("Bender")); this.peopleList.add(new Person("Fry")); {panel} {panel} add(new ListView("peopleList", this.peopleList) { protected void populateItem(ListItem listItem) { final Person person = (Person) listItem.getModelObject(); add(new Label("name", person.getName())); add(new Link("editPerson") { {panel} {panel} public void onClick() { setResponsePage(new PersonEdit(person, peopleList)); } }); } }); {panel} {panel} add(new Link("newPerson") { {panel} {panel} public void onClick() { setResponsePage(new PersonEdit(new Person(), peopleList)); } }); } {panel} } class PersonEdit extends WebPage { {panel} private FeedbackPanel feedbackPanel; private Person person; private List peopleList; {panel} {panel} public PersonEdit(Person person, List peopleList) { feedbackPanel = new FeedbackPanel("feedbackPanel"); add(feedbackPanel); {panel} {panel} add(new PersonForm("personForm", person, feedbackPanel)); } {panel} {panel} class PersonForm extends Form { public PersonForm(String s, Person person, IFeedback iFeedback) { super(s, new CompoundPropertyModel(person), iFeedback); add(new TextField("name")); add(new Button("save")); } {panel} {panel} public void onSubmit() { if (!peopleList.contains(person)) { peopleList.add(person); } setResponsePage(new PersonList(peopleList)); } } {panel} } class Person { {panel} public Person() { } {panel} {panel} public Person(String name) { this.name = name; } {panel} {panel} public String getName() { return name; } {panel} {panel} public void setName(String name) { this.name = name; } {panel} {panel} private String name; {panel} }
Click on "Discussion" above for another way of doing it.