仅使用JSP编辑bean

时间:2011-11-24 06:26:01

标签: jsp

我正在使用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。该请求还设置了一个属性,用于存储所有可用角色的列表。

因此,在循环内部,我需要检查该角色是否已附加到已编辑的组。

请帮忙。

1 个答案:

答案 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>