forEach mit normalen Variablen

Status
Nicht offen für weitere Antworten.

Raumsonde

Aktives Mitglied
Meine JSP soll die Werte eines String-Arrays ausgeben, das ich in der JSP selbst anlege.

Wie kann ich dieses mit der Nutzung von forEach wieder ausgeben?

Mein Versuch:

HTML:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<% String [] nameList = {"Anton", "Berta", "Christine" }; %>
<table>
 <c:forEach var="name" items="${nameList}" >
  <tr>
   <td>${name}</td>
  </tr>
 </c:forEach>
</table>
</body>
</html>

gibt ${name} statt der Werte des Arrays aus.

Wie muß ich den Code ändern (unter Beibehaltung von forEach (also kein Java-for)), damit
die Daten des String-Arrays ausgegeben werden?
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
Denke dass sein Problem ist dass er zwar ein StringArray hat, dieses aber unter keinem Scope als nameList bekannt ist.
 

Raumsonde

Aktives Mitglied
Bist Du sicher, dass der Pfad zur taglib richtig ist?

Ja; die uri habe ich per web.xml in mein WEB-INF\lib-Verzeichnis umgeleitet,
in dem sich die jstl.jar und standard.jar befinden.

Denke dass sein Problem ist dass er zwar ein StringArray hat, dieses aber unter keinem Scope als nameList bekannt ist.

Ja, ich würde gerne wissen, wie ich mit forEach auf Variablen zugreifen kann, die ich selbst
in der JSP angelegt habe.
 

gex

Bekanntes Mitglied
Variablen, welche du über Scriptlets definierst werden bei der Translation als lokale Java Variable deklariert. (Sieh dir mal das Java Resultat der Translation an.)

Die Expression Language (EL) kann jedoch nur Variablen aus den Scopes Page,Request,Session,Application (=ServletContext) auflösen.

Prinzipiell sollte man nicht mehr auf Scriptlets, Expressions und solches Zeugs setzten, ist nicht so toll wartbar.

Das heisst, hinterleg dir die Liste in einen der vier oben genannten Scopes, dann kannst du auch via EL darauf zugreifen.

Wenn du abe trotzdem Scriptles verwenden willst, dann solltest du anstelle von der EL eine Expression verwenden.
Code:
<% String [] nameList = {"Anton", "Berta", "Christine" }; %>
<table>
 <c:forEach var="name" items="<%= nameList%>" >
  <tr>
   <td>${name}</td>
  </tr>
 </c:forEach>
</table>

mit reinem JSTL ginge dein Code aber auch:
Code:
<table>
 <c:forTokens items="Anton,Berta,Christine" delims="," var="name">
  <tr>
   <td>${name}</td>
  </tr>
 </c:forTokens>
</table>
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben