request.setAttribute : How to move values to specific indexes?

84 Views Asked by At

I know that I can set a list as an attribute with the following code :

List<String> elements = new ArrayList<>();
list.add("Element 1");
list.add("Element 2");
list.add("Element 3");
request.setAttribute( "elementsJSP", elements );

But I would like to send the values to specific indexes, with a code that looks like this but it didn't work :

request.setAttribute( "elementsJSP[2]", "hello" );
request.setAttribute( "elementsJSP[5]", "world" );
request.setAttribute( "elementsJSP[10]", "stackoverflow" );

After that, I would like to parse "elementsJSP" with a "<c:forEach>" loop.

How can I achieve this?

1

There are 1 best solutions below

0
rickz On

Here is one way. I used an array not a list.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var='elementsJSP' value='${["Element 1", "Element 2", "Element 3", "Element 4", "Element 5", "Element 6", "Element 7", "Element 8", "Element 9", "Element 10", "Element 11"]}' />
${elementsJSP}<br>
<c:set var='elementsJSP' value='${["Element 1", "Element 2", "hello", "Element 4", "Element 5", "world", "Element 7", "Element 8", "Element 9", "Element 10", "stackoverflow"]}' />
${elementsJSP}<br>
<c:forEach var = "item" items="${elementsJSP}">
        ${item} 
</c:forEach>

Output: [Element 1, Element 2, Element 3, Element 4, Element 5, Element 6, Element 7, Element 8, Element 9, Element 10, Element 11] [Element 1, Element 2, hello, Element 4, Element 5, world, Element 7, Element 8, Element 9, Element 10, stackoverflow] Element 1 Element 2 hello Element 4 Element 5 world Element 7 Element 8 Element 9 Element 10 stackoverflow

Another way

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var='elementsJSP' value='${["Element 1", "Element 2", "Element 3", "Element 4", "Element 5", "Element 6", "Element 7", "Element 8", "Element 9", "Element 10", "Element 11"]}' />
${elementsJSP}<br>
<c:set var='greeting' value='hello' />
<c:set var='who' value='world' />
<c:set var='where' value='stackoverflow' />
<c:set var='elementsJSP' value='${["Element 1", "Element 2", greeting, "Element 4", "Element 5", who, "Element 7", "Element 8", "Element 9", "Element 10", where]}' />
${elementsJSP}<br>
<c:forEach var = "item" items="${elementsJSP}">
        ${item} 
</c:forEach>

Same Output.