如何将值存入request属性List指定索引并通过<c:forEach>解析?
解决方法:正确修改List元素并通过<c:forEach>遍历
首先你得明确:你后面写的request.setAttribute("elementsJSP[2]", "...")完全无效,这不是修改List里的元素,而是给request对象新增了几个独立的属性,键分别是elementsJSP[2]、elementsJSP[5],和你之前存的elementsJSP List没有任何关联。
正确修改List指定索引元素的方式
你需要先从request里取出原本的List对象,直接操作这个List的元素:
// 先从request获取已有的List,若未初始化则先创建 List<String> elements = (List<String>) request.getAttribute("elementsJSP"); if (elements == null) { elements = new ArrayList<>(); request.setAttribute("elementsJSP", elements); } // 处理指定索引赋值:需确保List大小足够,避免索引越界异常 // 比如要设置索引10的元素,先把List扩容到至少11个元素(索引从0开始) int targetIndex = 10; while (elements.size() <= targetIndex) { elements.add(null); // 用null填充空位 } // 现在可以设置指定索引的值了 elements.set(2, "hello"); elements.set(5, "world"); elements.set(10, "stackoverflow");
用<c:forEach>遍历List
在JSP页面中,直接遍历elementsJSP即可,示例代码:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:forEach items="${elementsJSP}" var="item" varStatus="status"> 索引${status.index}:<c:out value="${item}" default="空值"/><br> </c:forEach>
${status.index}会输出当前元素的索引<c:out value="${item}" default="空值"/>可以处理List中为null的元素,显示默认文本
内容的提问来源于stack exchange,提问作者fandetv
相关产品推荐
相关产品推荐

