在jstl中迭代arraylist时的PropertyNotFoundException

时间:2017-03-21 06:06:21

标签: jsp servlets arraylist jstl

我在servlet中有一个arraylist,我在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。 我该怎么办

1 个答案:

答案 0 :(得分:1)

id没有String属性,因此您需要更改jstl,如下所示:

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

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

还有一点是,如果servlet / controller已经在请求范围中设置了list,则不需要使用如上所示的scriptlet(即,您可以直接访问{ {1}}如list)。

如果您想访问items="list"的{​​{1}},可以使用index,如下所示:

list

在JSP页面中使用scriptlet不是最佳实践,因此我建议不要使用它们,请查看here以获取有关JSP最佳实践的更多详细信息。我在链接中添加了以下关键点:

  

在HTML文档中嵌入Java代码(或scriptlet)可能不会   适合所有HTML内容开发人员,也许是因为他们这样做   不懂Java语言,也不在乎学习它的语法。