/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.wicket.markup.html.form.onFormValidateModelObjects; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.panel.GenericPanel; import org.apache.wicket.model.IModel; public class AddressFormPanel extends GenericPanel<AddressFormPanel.ChildModel> { public AddressFormPanel(String id, IModel<ChildModel> model) { super(id, model); setupPanel(); } private void setupPanel() { // create the form and add the fields and submit button Form<ChildModel> form = new Form<ChildModel>("childForm", getModel()) { @Override protected void onValidateModelObjects() { super.onValidateModelObjects(); getModelObject().setChildValidated(true); } }; add(form); // add all the form fields form.add(new TextField("address1")); form.add(new TextField("address2")); form.add(new TextField("city")); form.add(new TextField("state")); form.add(new TextField("zip")); // add the child submit button add(new AjaxSubmitLink("childSubmitButton", form) { @Override public void onSubmit(AjaxRequestTarget target) { getPanelInstance().getModelObject().submittedCalled(target); } }); } private AddressFormPanel getPanelInstance() { return this; } public abstract static class ChildModel { String address1 = "address1"; String address2 = "address2"; String city = "city"; String state = "state"; String zip = "zip"; boolean childValidated = false; public String getAddress1() { return address1; } public void setAddress1(String address1) { this.address1 = address1; } public String getAddress2() { return address2; } public void setAddress2(String address2) { this.address2 = address2; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getZip() { return zip; } public void setZip(String zip) { this.zip = zip; } public boolean isChildValidated() { return childValidated; } public void setChildValidated(boolean childValidated) { this.childValidated = childValidated; } public void submittedCalled(AjaxRequestTarget target) { // do nothing here...(this is so parent can refresh the validations // area) } } }