Difference between compound model and propertymodel in wicket
Propertymodel and compoundPropertyModel does same job of binding the data from UI ( through components like text box ,dropdowns and radio choice) to object (variable in object ). Both can bind data in either ways . that is from object to UI and UI to object.
Difference is between them is the way it does that job . In Propertymodel , while creating itself we have to tell which variable in the object Propertymodel refers to . This syntax of PropertyModel
public PropertyModel(final Object modelObject, final String expression)
But in CompoundPropertyModel we just refer the whole object when we create CompoundPropertyModel . While binding to any UI compoent we will tell which variable it refers to through bind method .
This makes coding simple , reusable and reduce number of line of code . This also reduces memory size and share model with children.
File : Employee.java
class Employee { private String name; private String id; void setName(String name) { this.name = name; } String getName() { return name; } void setId(String id) { this.id = id; } String getId() { return id; } }
With PropertyModel we will write code as below
PropertyModel employeeNameModel = new PropertyModel(Employee, "name"); PropertyModel employeeIdModel = new PropertyModel(Employee, "id"); TextField nameField = new RequiredTextField("nameWicketId", employeeNameModel); TextField idField = new RequiredTextField("idWicketId", employeeIdModel);
With CompoundPropertyModel we will write code as below
CompoundPropertyModel employeeModel = new CompoundPropertyModel(Employee); TextField nameField = new RequiredTextField("nameWicketId", employeeModel.bind("name")); TextField idField = new RequiredTextField("idWicketId", employeeModel.bind("id"));