首页 > 解决方案 > 如何在下拉列表中使用 foreach 循环?

问题描述

我想在jsp(welcome.jsp)文件中使用foreach循环遍历数组,并希望将“项目名称”放在下拉列表中。但是代码不起作用。

<!-- dropdown menu -->
 <select name="projectList" id="arrDropdownList" >
    <c:forEach  var="name"  items="${person.getProjectList()}">
        <option value="${name}">${name}   </option>
    </c:forEach>
 </select>

我通过 doPost() 方法(RequestPostForm.java)接收指定的数据。(arrDropdownList 包含项目名称)

 Person person = new Person(name, email, authStringEnc, arrDropdownList);
 req.setAttribute("myPerson", person);
 RequestDispatcher dispatcher = req.getRequestDispatcher("welcome.jsp");

到目前为止,我只能通过页面上的 for 循环显示所需的项目名称(welcome.jsp)

for(Object elem : person.getProjectList())
        out.print(elem + " ");

标签: javahtmljspforeachdrop-down-menu

解决方案


问题出在以下行:

<c:forEach  var="name"  items="${person.getProjectList()}">

这里,person是 JSP 中的一个未知变量。由于您将 a 设置personrequsing myPerson,如下所示:

req.setAttribute("myPerson", person);

您只能使用myPerson以下方法检索它:

<c:forEach  var="name"  items="${myPerson.getProjectList()}">

或者

<c:forEach  var="name"  items="${myPerson.projectList}">

推荐阅读