I'm trying to update a ListView via AJAX. I've looked over a bunch of examples in the archives, but I'm still having some trouble. I'm trying to wrap the ListView with a WebMarkupContainer and then update that WebMarkupContainer. I also created a GroupMembership object, which is passed into the ListView. When the form is submitted, the List<GroupMembership> is populated fine, it's just not rendering. Below is the Java and HTML. Any help would be greatly appreciated. Thanks!

-Ryan

Java:

        groupManager = new WebMarkupContainer("groupManager");
        groupManager.setOutputMarkupId(true);
        form.add(groupManager);

        AjaxSubmitLink submit = new AjaxSubmitLink("submit") {
            public void onSubmit(AjaxRequestTarget target, Form form) {
                try {
                    setGroupMemberships();
                    target.addComponent(groupManager);
                } catch (Exception e) {
error("Unable to get groups for user " + email + ".");
                }
                target.addComponent(feedbackPanel);
            }
        };
        form.add(submit);

ListView groupMemberRows = new ListView("groupMemberRow", getGroupMemberships()) {
            protected void populateItem(final ListItem item) {
GroupMembership groupMembership = (GroupMembership) item.getModelObject(); item.add(new Label("group", groupMembership.getGroup ())); item.add(new CheckBox("member", new PropertyModel (groupMembership, "selected")));
            }
        };
        groupManager.add(groupMemberRows);

public void setGroupMemberships() {
        groupMemberships.clear();
List<String> userGroups = groupQuery.getGroupsByUser(getEmail ());
        List<String> allGroups = groupQuery.getGroups("*");
        GroupMembership groupMembership;
        for (String group : allGroups) {
            groupMembership = new GroupMembership();
            if (userGroups.contains(group)) {
                groupMembership.setGroup(group);
                groupMembership.setSelected(true);
            } else {
                groupMembership.setGroup(group);
                groupMembership.setSelected(false);
            }
            groupMemberships.add(groupMembership);
        }
    }

    public List<GroupMembership> getGroupMemberships() {
        return groupMemberships;
    }


HTML:

    <form wicket:id="manageGroups" name="manageGroups">
<table align="center" width="50%" wicket:id="groupManager">
            <tr>
                <th>Group</th>
                <th>Member</th>
            </tr>
            <tr wicket:id="groupMemberRow" class="hideRow">
                <td><span wicket:id="group"></span></td>
                <td><input wicket:id="member" type="checkbox"/></td>
            </tr>
            <tr>
                <td></td>
<td align="right"><a wicket:id="save" class="formButtonAlignedRight">Save</a></td>
            </tr>
        </table>
    </form>

Reply via email to