public class PollForm extends Form { private static final long serialVersionUID = 1L; private List answers = new ArrayList(); public PollForm(final String id, final IModel model) { super(id, model); add(new FeedbackPanel("feedback")); add(new RequiredTextField("subject")); add(new MFXNawEditor("body").setRequired(true)); final WebMarkupContainer container = new WebMarkupContainer("container"); container.setOutputMarkupId(true); add(container); final Poll poll = (Poll) getModelObject(); answers.add(new PollAnswer(poll)); container.add(new ListView("answers", new PropertyModel(this, "answers")) { private static final long serialVersionUID = 1L; @Override protected void populateItem(final ListItem arg0) { IModel model = arg0.getModel(); arg0.add(new RequiredTextField("answer", new PropertyModel(model, "answer"))); } }); add(new AjaxLink("add") { private static final long serialVersionUID = 1L; @Override public void onClick(final AjaxRequestTarget arg0) { answers.add(new PollAnswer(poll)); arg0.addComponent(container); } }); add(new AjaxLink("remove") { private static final long serialVersionUID = 1L; @Override public void onClick(final AjaxRequestTarget arg0) { answers.remove(answers.size()); arg0.addComponent(container); } }); add(new FormInlineValidator()); } public void setAnswers(final List answers) { this.answers = answers; } public List getAnswers() { return answers; } }