Java ArrayList需要在响应属性中才能访问同一JSP的JSTL

Java ArrayList需要在响应属性中才能访问同一JSP的JSTL,java,jsp,arraylist,Java,Jsp,Arraylist,为什么在JSTL中使用ArrayList时需要将其放置在请求.setAttt(…)中,而在同一jsp中不需要将其放置在普通字符串数组中 ArrayList<String> list = new ArrayList(); while (r.next()) { list.add(r.getString("stu_first_name")); } <c:forEach items="${list}" va

为什么在JSTL中使用
ArrayList
时需要将其放置在
请求.setAttt(…)
中,而在同一jsp中不需要将其放置在普通字符串数组中

ArrayList<String> list = new ArrayList();  

     while (r.next()) {
               list.add(r.getString("stu_first_name"));
         }
        <c:forEach items="${list}" var="names">
        <tr>
        <td>${names}</td><br/>
        </tr>
        </c:forEach> 
你不需要

request.setAttribute("list", list); 
为了

<c:forEach to work>

必须使用
${directive.list}
才能使其工作?


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.util.*" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<%
        String[] colors = {"Red", "Green", "Blue"};
        //ArrayList<String> arrcolors = new ArrayList();
        //colors must be set to request for JSTL to access in code line.
        request.setAttribute("colors", colors);


    %>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>EL Page</title>
    </head>
    <body>
        <form name="tester" action="post" method="/dropentry">
            <select>
            <c:forEach items="${colors}" var="names"> 
                <option value="${names}">${names}</option>
             </c:forEach>   
        </select>
            <input type="submit" value="Enter James"
        </form>
埃尔佩奇 ${names}
响应没有属性。jspel总是使用属性。无论是数组还是列表都不会改变任何东西。尝试创建一个尽可能简单的JSP,尝试访问一个未设置为属性的数组,您将看到它不起作用。如果你想让它工作,那么在这里发布这个完整的简单示例。还有,是JSTL,不是JSLT。对不起,是请求。。并更新了JSTL——奇怪的是,当必须设置Obj时,可以在JSTL中使用一个简单的字符串而不设置out。不,这不是真的。尝试创建一个可复制的示例。嗯,我想我在使用它时错过了代码的这一部分。你是对的,谢谢,所以他们需要在JSTL访问请求中。
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.util.*" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<%
        String[] colors = {"Red", "Green", "Blue"};
        //ArrayList<String> arrcolors = new ArrayList();
        //colors must be set to request for JSTL to access in code line.
        request.setAttribute("colors", colors);


    %>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>EL Page</title>
    </head>
    <body>
        <form name="tester" action="post" method="/dropentry">
            <select>
            <c:forEach items="${colors}" var="names"> 
                <option value="${names}">${names}</option>
             </c:forEach>   
        </select>
            <input type="submit" value="Enter James"
        </form>