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: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
--------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org