Also, tried using a LoadableDetachableModel in the ListView:
ListView groupMemberRows = new ListView("groupMemberRow", new
LoadableDetachableModel(){
protected Object load(){
return 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")));
}
};
Still no luck.
Ryan
On Jun 24, 2008, at 1:21 PM, Ryan O'Hara wrote:
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>