7
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
  </head>
  <body>
<%=new Date() %>

<%
ArrayList al = new ArrayList();
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
%>

    <select>
      <option value="<%=al%>"></option>
    </select>
  </body>
</html>

这是我的代码我想在 Jsp 的下拉列表中添加 Arraylist 我不知道如何在 html obtion 或下拉列表中绑定 arraylist 请帮助我我已经尝试了很多但无法做到这一点。

4

4 回答 4

12

您必须使用JSTL <forEach>来遍历元素并将其添加到select-option. 可能使List一个作用域属性。在 servlet 中填充List对象,将其设置在request/session范围内并将其转发request到此 JSP。List请记住,您可以在 JSP 本身中填充并使用pageScope来引用它,但在我看来,这将是糟糕的设计。

<select>
 <c:forEach var="element" items="${al}">
  <option value="${element}">${element}</option>
 </c:forEach>
</select> 

这里,al是存储List在大概requestsession范围内的属性的名称。

在项目中使用 JSTL:

  1. 下载JSTL 1.2 jar 。

  2. 在 JSP 文件中为JSTL 核心 taglib 声明 taglib

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    

如果您只想使用脚本(当然这很糟糕):

<%

List<String> al = new ArrayList<String>();
al.add("C");
..........
...........

%>
<select>
  <%  for(String element: al) { %>
   <option value="<%=element%>"><%=element%></option>
  <% } %>
</select>

List如果您已定义as ,则上述代码将起作用List<String>,否则您需要将元素强制转换为String.

阅读如何避免 JSP 文件中的 Java 代码?.

于 2013-07-26T10:57:27.537 回答
5

已编辑

尝试这个:

<%

ArrayList al = new ArrayList();
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");

%>

<select>
   <%  for(int i = 0; i < al.size(); i++) {
           String option = (String)al.get(i);
   %>
   <option value="<%= option %>"><%= option %></option>
   <% } %>
</select>
</body>
</html>
于 2013-07-26T10:58:38.043 回答
1

查看核心 JSTL 库中的标记。

将 arraylist 存储在 pageScope.myList 中并循环如下:

<select>
<c:forEach items="${pageScope.myList}" var="item" varStatus="status">
<option value='${item}'></option>
</c:forEach >
</select>

这比使用不被认为是好的做法的脚本更可取

于 2013-07-26T11:10:53.357 回答
1

试试这个:在两者之间声明你的arraylist<%! … %>

<%! ArrayList al = new ArrayList(); %>
于 2015-08-12T13:04:06.033 回答