tags:

views:

956

answers:

4

is it possible to add values to an ArrayList instead of using a HashMap

something like:

<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>

now getting the error:

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

thx

+3  A: 

JSTL is not designed to do this kind of stuff. This really belongs in the business logic which is (in)directly to be controlled by a servlet class.

Create a servlet which does like:

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);
}

Map this on an url-pattern of /animals.

Now create a JSP file in /WEB-INF/animals.jsp (place it in WEB-INF to prevent direct access):

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

No need for jsp:useBean as servlet has already set it.

Now call the servlet+JSP by http://example.com/context/animals.

BalusC
+1  A: 

The above code is not working.

Following are the lines of code that has to be placed in animals.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

Sarvesh
The OP was already using JSTL, it was unnecessary to mention it in my answer. It's obvious enough that the taglib has to be declared in order to get the tags to be parsed. Besides, your taglib URI is far outdated. There has to be a `/jsp` in between.
BalusC
A: 

fixed it on a different way with useing JSTL in this way

michel
A: 

Hi Michel,

I am getting the same error with this:

<jsp:useBean id="menu" scope="request" class="com.eatbestfood.bean.FoodMenu" />
<c:set target="${menu}" property="businessId" value="1" />

any clue on how you fixed your problem?

Cheers,

Pimmy

Pimmy