代码之家  ›  专栏  ›  技术社区  ›  Michel

使用jstl向arraylist添加值

  •  5
  • Michel  · 技术社区  · 15 年前

    是否可以将值添加到arraylist而不是使用hashmap

    类似:

    <jsp:useBean id="animalList" class="java.util.ArrayList" />
    
    <c:set target="${animalList}" value="Sylvester"/>
    
    <c:set target="${animalList}" value="Goofy"/>
    
    <c:set target="${animalList}" value="Mickey"/>
    
    <c:forEach items="${animalList}" var="animal">
    
    ${animal}<br>
    
    </c:forEach>    
    

    现在得到错误:

    javax.servlet.jsp.JspTagException: Invalid property in &lt;set&gt;:  "null"
    

    谢谢

    2 回复  |  直到 12 年前
        1
  •  1
  •   StKiller    13 年前

    上述代码不起作用。

    下面是必须放在文件中的代码行 animals.jsp

    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    <c:forEach var="animal" items="${animals}">
       <c:set var="animalName" value="${animal}"/>
       <c:out value="${animalName}"/>
    </c:forEach>
    
        2
  •  11
  •   BalusC    15 年前

    JSTL并不是设计用来做这种事情的。这实际上属于业务逻辑,它(in)直接由servlet类控制。

    创建一个servlet,它类似于:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
        List<String> animals = new ArrayList<String>();
        animals.add("Sylvester");
        animals.add("Goofy");
        animals.add("Mickey");
        request.setAttribute("animals", animals);
        request.getRequestDispatcher("/WEB-INF/animals.jsp").forward(request, response);
    }
    

    把这个映射到一个 url-pattern 属于 /animals .

    现在在中创建一个JSP文件 /WEB-INF/animals.jsp (把它放进去 WEB-INF 为了防止直接访问):

    <c:forEach items="${animals}" var="animal">
        ${animal}<br>
    </c:forEach>
    

    不需要 jsp:useBean 因为servlet已经设置了它。

    现在通过以下方式调用servlet+jsp http://example.com/context/animals .