JSP modyfing复选框中的collections值

时间:2018-10-12 12:28:59

标签: jsp

我完全不知道如何强制JSP修改集合中的值。

我有这样的代码(最重要的部分-我认为):

            <tbody>
        <c:forEach items="${formObject.userList}" var="list" varStatus="cnt">
            <c:set var="idx" value="${cnt.index}"/>
            <tr>
                <td class="moduleCode">
                    <c:choose>
                        <c:when test="${list.userType == 'OW'}"> <spring:message
                                code="manage-flow.user.message.ow"/>
                        </c:when>
                        <c:when test="${list.userType == 'CO'}"> <spring:message
                                code="manage-flow.user.message.co"/>
                        </c:when>
                        <c:when test="${list.userType == 'RE'}"> <spring:message
                                code="manage-flow.user.message.re"/>
                        </c:when>
                        <c:when test="${list.userType == 'JU'}"> <spring:message
                                code="manage-flow.user.message.ju"/>
                        </c:when>
                    </c:choose>
                </td>
                <td class="moduleCheckbox">
                    <div>
                        <input type="checkbox" name="s-${idx}"
                               <c:if test="${list.availA}">checked</c:if>
                               <c:if test="${!formObject.edited}">disabled</c:if> />
                    </div>
                </td>
                <td class=" moduleCheckbox">
                    <div>
                        <input type="checkbox" name="se-${idx}"
                               <c:if test="${list.availP}">checked</c:if>
                               <c:if test="${!formObject.edited}">disabled</c:if> />
                    </div>
                </td>
                <td class="moduleCheckbox">
                    <div>
                        <input type="checkbox" name="ser-${idx}"
                               <c:if test="${list.availC}">checked</c:if>
                               <c:if test="${!formObject.edited}">disabled</c:if> />
                    </div>
                </td>
            </tr>
        </c:forEach>
        </tbody>

其中一些已被检查,而其他未检查(我正在从数据库中读取)并进行设置。

现在,我们遇到这样的情况。我有一个未选中的复选框,我单击它来检查他。然后单击“保存”按钮,formObject发送将保持不变(它完全相同,因为它来自数据库),因此我将使用相同的值更新数据库中的行...

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

对我有用的解决方案。

<tbody>
<c:forEach items="${formObject.userList}" var="list" varStatus="cnt">
    <c:set var="idx" value="${cnt.index}"/>
    <tr>
        <td class="moduleCode">
            <c:choose>
                <c:when test="${list.userType == 'OW'}"> <spring:message
                        code="manageUser-flow.user.message.ow"/>
                </c:when>
                <c:when test="${list.userType == 'CO'}"> <spring:message
                        code="manageUser-flow.user.message.co"/>
                </c:when>
                <c:when test="${list.userType == 'RE'}"> <spring:message
                        code="manageUser-flow.user.message.re"/>
                </c:when>
                <c:when test="${list.userType == 'JU'}"> <spring:message
                        code="manageUser-flow.user.message.ju"/>
                </c:when>
            </c:choose>
        </td>
        <td class="moduleCheckbox">
            <div>
                <c:if test="${!formObject.edit}">
                    <form:checkbox path="userList[${idx}].availA"
                                   cssClass="checkbox" value="true" disabled="true"/>
                </c:if>
                <c:if test="${formObject.edited}">
                    <form:checkbox path="userList[${idx}].availA"
                                   cssClass="checkbox" value="true"/>
                </c:if>
            </div>
        </td>
        <td class=" moduleCheckbox">
            <div>
                <c:if test="${!formObject.edit}">
                    <form:checkbox path="userList[${idx}].availP"
                                   cssClass="checkbox" value="true" disabled="true"/>
                </c:if>
                <c:if test="${formObject.edited}">
                    <form:checkbox path="userList[${idx}].availP"
                                   cssClass="checkbox" value="true"/>
                </c:if>
            </div>
        </td>
        <td class="moduleCheckbox">
            <div>
                <c:if test="${!formObject.edit}">
                    <form:checkbox path="userList[${idx}].availC"
                                   cssClass="checkbox" value="true" disabled="true"/>
                </c:if>
                <c:if test="${formObject.edited}">
                    <form:checkbox path="userList[${idx}].availC"
                                   cssClass="checkbox" value="true"/>
                </c:if>
            </div>
        </td>
    </tr>
</c:forEach>
</tbody>