我正在使用servlet和JSP编写一个小型Web应用程序(没有其他框架)。
有一个页面显示数据库中的所有组。通过按下将重定向到页面"editGroup?id=1"
的按钮,可以编辑条目。因此,目标serlvet发现使用提供的id进行分组,使用该bean填充请求并转发到JSP页面:
<form action="addGroup.html" method="post">
Group name : <input type="text" name="name" value="${group.name }"/><br />
Group description : <input type="text" name="description" value="${group.description }"/><br />
Group roles :
<c:forEach var="role" items="${roles}">
<input type="checkbox" name="roles_id" value="${role.id}" />${role.name}<br />
</c:forEach>
<input type="submit" value="Submit">
</form>
问题是:如何预先选择已附加到群组的角色? 组的bean有一个bean列表Role。该请求还设置了一个属性,用于存储所有可用角色的列表。
因此,在循环内部,我需要检查该角色是否已附加到已编辑的组。
请帮忙。
答案 0 :(得分:1)
经过一些调查后,我在this question找到了解决方案:
<c:forEach var="role" items="${roles}">
<c:choose>
<c:when test="${group.roles.contains(role)}">
<input type="checkbox" name="roles_id" value="${role.id}" checked="checked"/>${role.name}
</c:when>
<c:otherwise>
<input type="checkbox" name="roles_id" value="${role.id}"/>${role.name}
</c:otherwise>
</c:choose>
</c:forEach>
使用表达式:${group.roles.contains(role)}
或者这样(谢谢, BalusC !)
<c:forEach var="role" items="${roles}">
<input type="checkbox" name="roles_id" value="${role.id}" ${group.roles.contains(role) ? 'checked' : ''}/>${role.name}
</c:forEach>