3

我有一个在 JSP 的 scriptlet 中定义的 ArrayList。在正文部分,我想使用 JSTL forEach 循环显示项目。

在经历了这样的教程之后我编写了以下代码:

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

<%
ArrayList<String> fruits = new ArrayList<String>();
fruits.add("Orange");
fruits.add("Apple");
%>

<html>
<head>
    <title>JSTL</title>
</head>
<body>
    <c:forEach var="fruit" items="${fruits}">
        <c:out value="${fruit}" />
    </c:forEach>
</body>
</html>

但我得到一个空白页。我在上面的代码中哪里出错了?

我能找到的所有教程似乎都在 servlet 中定义了一个 ArrayList bean,并通过request. 在 forEach 循环中,他们使用c:outand${bean.prop}来打印它。我没有这样尝试过。我想做一些更简单的事情,但似乎无法让这段代码工作。

4

3 回答 3

3

添加 pageContext.setAttribute("fruits", fruits);

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.ArrayList" %>

<%
ArrayList<String> fruits = new ArrayList<String>();
fruits.add("Orange");
fruits.add("Apple");
pageContext.setAttribute("fruits", fruits);
%>
<html>
<head>
<title>JSTL</title>
</head>
<body>
    <c:forEach var="fruit" items="${fruits}">
     <c:out value="${fruit}" />
    </c:forEach>
</body>
</html>
于 2013-02-07T17:06:08.460 回答
2

您需要将数组放入请求中。在最后一次 fruits.add() 调用之后立即执行此操作。

<%= request.setAttribute( "fruits", fruits ); %>
于 2013-02-07T16:53:36.710 回答
0

最简单的方法是使用和使用它来定义一个变量。

<c:set var="fruits">
   <%= fruits %>
<c:set>

<c:forEach var="fruit" items="${fruits}">
    <c:out value="${fruit}" />
</c:forEach

<%= fruits %> 是您在 scriptlet 中创建的数组列表。

于 2013-09-15T11:53:35.330 回答