如何使用 JSTL 和 EL 获取动态表单字段名称的值

How to get values for dynamic form field names using JSTL and EL

我有8个复选框和1个按钮,当用户选中任何复选框并单击按钮时,我想检查是否有任何复选框被选中并将其显示在另一个.jsp

到目前为止,我已经提到了几个类似的问题,但没有运气。所以我试着用我自己的逻辑来管理

First.jsp

<c:forEach begin="1" end="8" varStatus="loop">
        <input type="checkbox"  id="seat" name="seat${loop.index}" value="seat${loop.index}" >
        <label for="seat">Seat${loop.index}</label>
</c:forEach> <br> <br>
<input type="submit" value="Save" name="savebtn">

Second.jsp

<c:forEach begin="1" end="8" varStatus="loop">
        <c:if test="${not empty param.seat[loop.index]}">
            <c:out value="${param.seat1} is booked"/>
        </c:of>
    </c:forEach>

关于上面的代码,我有 2 个问题:

我无法获取参数中的 loop.index$param.seat[loop.index] 不起作用 即使我尝试手动执行,我也只能从 seat1 获得价值。我无法从其余部分(座位 2、座位 3 等)中获得价值。

${param.seat[loop.index]} 暗示 seat 是一个集合,但它不是(它甚至可能不存在)。您在 ${param.seatX} 之后,您可以在其中动态设置 X。您可以通过首先创建一个包含参数名称的变量来做到这一点:

<c:set var="seatVarName" value="seat${loop.index}"/>

现在您可以使用此变量从隐式 EL 对象中获取参数值:

${param[seatVarName]}

另请参阅:

  • JSP expression language and dynamic attribute names