JSP 仅 foreach 中的选项标签 returns 第一个值

JSP option tag in foreach only returns first value

我有一个带有下拉框的表单,我正在使用 foreach 循环用 sql 查询返回的值填充它。它应该通过 varStatus 属性 返回循环索引。这是代码:

<form action="response.jsp">
    <strong>Select a Department:</strong>
    <select name="depts">
        <c:forEach var="dept" items="${departments.departments}" varStatus="loop">
            <option value="${loop.index}">${dept}</option>
        </c:forEach>
    <input type="submit" value="submit" name="submit" />
</form>

下拉列表正在正确填充,但是当按下提交时,只返回第一个索引,即无论选择哪个选项,都只返回第一个值。

接收返回值的代码为

<jsp:setProperty name="department" property="index" value="${param.loop.index}"/>

索引的 setter 方法还设置了 class 中从索引派生的其他三个变量的值(如果有任何不同的话)。

不确定我是否遗漏了一些明显的东西,但我们将不胜感激。

如果您使用 .index,它将从 0 开始计数。

如果您使用 .count,它将从 1 开始计数。

关于显示输出,我没有发现您的代码有任何问题。显示的输出是什么?

<select> 标记中,分配的名称参数是提交表单时传递的变量的名称。这意味着在<jsp:setProperty>标签的值字段中,应该使用这个名称值作为参数值,即

<jsp:setProperty name="department" property="index" value="${param:depts}"/>