Use a LoadableDetachableModel<List<User>> in the ListView Constructor.
Put all the load loading into the load method and see what happens.
Cheers
Per
Am 19.01.2012 07:49, schrieb x.yang:
Hello, Everyone,
I am trying to build a web app with Wicket, EJB3, and MySQL. My IDE is
Netbeans 6.9.1 and the server is Glassfish 3.1.
I have created two entity beans 'Centre' and 'User', and one Centre has many
User(s). I also created two Facades for them.
The Wicket page used to list the Users is as below:
<------------------------------------------------------------
class ListUsers extends WebPage {
@EJB(name = "UserFacade")
private UserFacade userFacade;
public ListUsers(Centre c) {
List<User> users;
if (c == null) {
users = userFacade.findAll();
} else {
users = new ArrayList<User>(c.getUserCollection());
}
final ListView<User> list = new ListView<User>("eachUser", users) {
@Override
protected void populateItem(ListItem item) {
final User user = (User) item.getModelObject();
item.add(new Label("username", user.getUsername()));
item.add(new Label("fullname", user.getFullname()));
item.add(new Label("email", user.getEmail()));
item.add(new Label("centreid", user.getCentre().getName()));
}
};
add(list);
}
}
----------------------------------------------------->
The page to add a User is following:
<----------------------------------------------------
public AddUser(Centre c) {
user = new User();
user.setCentre(c);
Form<AddUser> form = new Form<AddUser>("AddUser") {
@Override
protected void onSubmit() {
userFacade.create(user);
}
};
form.add(new TextField<String>("username",
new PropertyModel(user, "username")).setRequired(true));
PasswordTextField tf_password = new PasswordTextField("password",
new PropertyModel(user, "hashedPassword"));
form.add(tf_password);
form.add(new TextField<String>("fullname",
new PropertyModel(user, "fullname")).setRequired(true));
TextField tf_email = new TextField<String>("email",
new PropertyModel(user, "email"));
form.add(tf_email);
LoadableDetachableModel centres = new LoadableDetachableModel() {
@Override
protected Object load() {
return centreFacade.findAll();
}
};
DropDownChoice<Centre> ddc = new DropDownChoice<Centre>("centreid",
new PropertyModel<Centre>(user, "centre"), centres,
new ChoiceRenderer<Centre>("name", "name"));
form.add(ddc.setRequired(true));
add(form);
}
}
-------------------------------------------------------->
The problem is I can't see the newly added User in the list with
getUserCollection() method of Centre, but I do see the new User if I use
userFacade.findAll() method. Could you please help me and point me to the
right direction? I am quite new to Wicket and EJB3. Any comments are welcom.
Thanks a lot.
Yang
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/ListView-not-refreshed-after-a-new-row-is-inserted-with-EJB3-as-its-backend-data-tp4309318p4309318.html
Sent from the Users forum mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]