2017-03-21 2 views
-1

Ich habe eine Arraylist in Servlet, die ich verwende es in JSP.PropertyNotFoundException beim Iterieren von Arraylist in JSTL

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

ich jstl bin mit der Array-Liste

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

Aber immer Fehler PropertyNotFoundException zu analysieren. was soll ich tun

+0

Veröffentlichen Sie die vollständige Trace des Ausnahme-Stacks, und beenden Sie die Verwendung von Scriptlets. Die JSTL verwendet die JSP EL, keine Scriptlets. Vergessen Sie, dass Skriptlets existieren. Sie sollten nicht für Jahre und Jahre verwendet werden.

+0

Warum initialisierst du deine Variable auch mit einer neuen leeren Liste, kurz bevor sie initialisiert wird wieder mit der Liste in der Anfrage gespeichert? –

Antwort

1

Es gibt keine id Eigenschaft für String, so müssen Sie Ihre jstl ändern, wie unten dargestellt:

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

Auch wenn Sie c:forEach verwenden, können Sie die Liste iterieren, so Mit ${element} erhalten Sie die Elemente in der list.

Ein weiterer Punkt ist, dass wenn die list bereits in der Anfrage Umfang vom Servlet/Controller eingestellt ist, müssen Sie Scriptlets nicht verwenden, wie oben gezeigt (das heißt, können Sie direkt die list wie items="list" zugreifen).

Wenn Sie die index des list zugreifen möchten, können Sie varStatus verwenden, wie unten dargestellt:

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

Scriptlets in Ihrer JSP-Seiten zu verwenden ist keine bewährte Methode, so schlage ich vor, sie nicht zu verwenden, Weitere Informationen zu JSP-Best Practices finden Sie unter here. Ich habe den entscheidenden Punkt unten aus dem Link hinzugefügt:

Bits von Java-Code einbetten (oder Scriptlets) in HTML-Dokumenten können nicht geeignet sein für all HTML-Content-Entwickler, vielleicht weil sie nicht wissen, die Sprache Java und interessiert sich nicht für seine Syntax.

+0

wie auf Element bei spezifizierten Index zuzugreifen? –

+0

Sie wollen also nicht die "Liste" iterieren? – developer

+0

ich möchte. Sie möchten aber jedes Element mit seinem Index verwenden. –

Verwandte Themen