On page 317 there is an example of adding role checkboxes to a list of
users. Next to each user, the JSP adds a "User" and "Administrator" checkbox
where you can select roles for the user. Then, at the bottom of the screen,
there's a submit button to update all of the user roles in the list.
*
UserListActionBean.java:*
public class UserListActionBean extends BaseActionBean {
....
private List<User> users = userDao.read();
....
private List<User> getUsers() {
return users;
}
....
public List<Role> getRoles() {
return roleDao.read();
}
....
public Resolution save() {
for( User user : users ) {
userDao.save(user);
}
userDao.commit();
....
}
....
}
*
user_list.jsp:*
<c:set var="index" value="0"/>
<s:form .... >
<displaytag:table name="${actionBean.users}" id="user" />
...
<displaytag:column>
<c:forEach var="role" items="${actionBean.roles}">
<s:checkbox name="users[${index}].roles" value="${role}"
checked="${user.roles}"
</c:forEach>
<c:set var="index" value="${index+1}"/>
</displaytag:column>
...
</displaytag:table>
<s:submit name="save"/>
</s:form>
Now, the issue I have with this is what happens if the user list changes
before the user presses submit? The indexes assigined in
"users[${index}].roles" might no longer refer to the correct user.
How would you go about actually building something like this?
The best solution I can think of would be to define a
"Map<String,List<Roles>> userRolesMap" in the action bean. Then, in the
table I would set the checkbox name to: "userRolesMap['${user.id}']"
Finally, to update the roles when the user presses save, loop through the
users, and check to see if the userRolesMap contains the user's id - if it
does assign the user roles and update the user.
Does anyone else have any better solutions to solve this?
Thanks!
------------------------------------------------------------------------------
_______________________________________________
Stripes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-users