在 jstl 中迭代数组列表时出现 PropertyNotFoundException

PropertyNotFoundException while iterating arraylist in jstl

我在 servlet 中有一个数组列表,我正在 jsp 中使用它。

ArrayList<String> list =new ArrayList<String>();
list = (ArrayList<String>)request.getAttribute("iInfoType");

我正在使用jstl解析数组列表

<c:forEach items="<%=list %>" var="element">    
<c:out value="${element[10].id}"/>
</c:forEach>

但是收到错误 PropertyNotFoundException。 我该怎么办

没有id 属性 for String,所以你需要改变你的jstl如下图:

<c:forEach items="list" var="element">    
<c:out value="${element}"/>
</c:forEach>

此外,当您使用 c:forEach 时,您正在迭代列表,因此使用 ${element} 会为您提供 list.

中存在的元素

还有一点是,如果list已经被servlet/controller设置在请求范围内,你就不需要像上面那样使用scriptlets(即你可以直接访问list 喜欢 items="list").

如果要访问listindex,可以使用varStatus如下图:

<c:forEach items="list" var="element" varStatus="myList">    
    <c:out value="${myList.index}"/>
</c:forEach>

在 JSP 页面中使用 scriptlet 不是最佳做法,因此我建议不要使用它们,请查看 here 以了解有关 JSP 最佳做法的更多详细信息。我从 link:

添加了下面的关键点

Embedding bits of Java code (or scriptlets) in HTML documents may not be suitable for all HTML content developers, perhaps because they do not know the Java language and don't care to learn its syntax.