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>