foreach中的JSP选项标记仅返回第一个值

时间:2016-10-20 15:37:02

标签: jsp jstl

我有一个带有下拉框的表单,我使用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方法还设置了类中从索引派生的其他三个变量的值,如果这会产生任何差异。

不确定我是否错过了一些显而易见的事情,但我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

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

我没有看到代码中有关显示输出的任何问题。无论如何,显示的输出是什么?

答案 1 :(得分:0)

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

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