我有一个在JSP中的scriptlet中定义的ArrayList。在body部分中,我想使用JSTL forEach循环显示项目。
在完成this one之类的教程之后,我编写了以下代码:
<%@ 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中定义了一个bean的ArrayList,并通过request
将它们传递给JSP。在forEach循环中,他们使用c:out
和${bean.prop}
来打印它。我没有尝试过它们。我想做一些更简单的事情,但似乎无法让这段代码发挥作用。
答案 0 :(得分: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>
答案 1 :(得分:2)
您需要将数组放入请求中。在最后一次fruits.add()调用之后立即执行此操作。
<%= request.setAttribute( "fruits", fruits ); %>
答案 2 :(得分:0)
最简单的方法是使用和使用它来定义变量。
<c:set var="fruits">
<%= fruits %>
<c:set>
<c:forEach var="fruit" items="${fruits}">
<c:out value="${fruit}" />
</c:forEach
&lt;%= fruits%&gt;是你在scriptlet中创建的arraylist。