hi all,
i got some sort of crud page consisting of a listview and a detailview for my
objects. depending on a stateflag either the listview is shown or the
detailview.
the detailview contains an addresspanel (textfields for my properties, which
use
propertymodels to get the fieldvalues).
in my crudpage i got two methods for changing to editing state and cycling back
to listview:
@Override
public void onEditAction(User selected) {
User object = userDao.load(selected.getId());
addressPanel.detachModels();
setModelObject(object);
}
@Override
public void onCancelAction() {
setModelObject(null);
}
the addresspanel is created in the constructor of my crudpage with the model of
the page:
public UserPage() {
super(20, CrudPanel.ACTION_ALL);
setModel(new CompoundPropertyModel(new User()));
addTextField("username", "labelUsername", "Label.Username");
PasswordTextField tf = new PasswordTextField("password");
tf.setLabel(new ResourceModel("Label.Password"));
tf.setRequired(false);
tf.setResetPassword(false);
detailsForm.add(tf);
detailsForm.add(new SimpleFormComponentLabel("labelPassword",
tf));
addressPanel = new AddressPanel("addressPanel", "address.",
getModel());
detailsForm.add(addressPanel);
}
the problem is:
for the first time i swith to editing mode for a user, all fields are populated
like they should. if i cycle back by cancelling and choose another user for
editing, the textfields in the addresspanel still contain old values.
i found out, that the textfields call their getObject() method just only once
and not each time i switch from list to edit mode.
is there a way to inform my addresspanel to refresh its childs?
ty in advance,
harald
----addresspanel----
public class AddressPanel extends Panel {
private static final long serialVersionUID = 1L;
private String propertyPrefix = "";
public AddressPanel(String id, String propertyPrefix, Address address) {
this(id, propertyPrefix, new Model(address));
}
public AddressPanel(String id, String propertyPrefix, IModel model) {
super(id, model);
if (null != propertyPrefix)
this.propertyPrefix = propertyPrefix;
addTextField("company", "labelCompany", "Label.Company");
...
}
private TextField addTextField(String name, String labelName, String
labelKey) {
TextField tf = new TextField(name, new
PropertyModel(getModel(),
this.propertyPrefix + name) {
public Object getObject() {
Object o = super.getObject();
System.out.println("OBJ " + o);
return o;
}
});
tf.setLabel(new ResourceModel(labelKey));
add(tf);
add(new SimpleFormComponentLabel(labelName, tf));
return tf;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user