【问题标题】:How to get values for dynamic form field names using JSTL and EL如何使用 JSTL 和 EL 获取动态表单字段名称的值
【发布时间】:2018-08-10 08:06:30
【问题描述】:

我有 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">

第二个.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 个问题:

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

【问题讨论】:

  • 您的编辑不正确。您应该使用${param[seatVarName]} 来获取值。
  • 你是对的,它现在正在工作。
  • 我将其恢复为我的旧问题

标签: jstl el


【解决方案1】:

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

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

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

${param[seatVarName]}

另见:

【讨论】:

  • 我实施了您的解决方案。它确实摆脱了我之前的问题。但它给我带来了新问题,无论我做什么它都会告诉我 1 - 8 号座位已预订
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 2013-03-04
  • 2011-10-01
相关资源
最近更新 更多