Добавить значения для использования массива JSTL - PullRequest
5 голосов
/ 02 декабря 2009

возможно ли добавить значения в 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 ]

11 голосов
/ 02 декабря 2009

JSTL не предназначен для такого рода вещей. Это действительно относится к бизнес-логике, которая (не) непосредственно контролируется классом сервлета.

Создайте сервлет, который любит:

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, поскольку сервлет уже установил его.

Теперь вызовите сервлет + JSP http://example.com/context/animals.

1 голос
/ 14 декабря 2009

Приведенный выше код не работает.

Ниже приведены строки кода, которые должны быть помещены в файл 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...