For-Schleife mit JSTL über ArrayList

Status
Nicht offen für weitere Antworten.

P4G0

Mitglied
Hallo Leute,

ich beschäftige mich gerade im Zusammenhang mit einem Studien-Projekt mit JSPs. Derzeit gebe ich mit Hilfe eines Scriptlets die Daten einer MySQL-Tabelle aus, das möchte ich aber gerne mit JSTL lösen, nur habe ich keine Ahnung wie ich das anstelle. Eine längere Suche im Netz hat mir auch nicht weitergeholfen.

Der Quellcode sieht gerade wie folgt aus (unwichtige Stellen kürze ich mit [...])
Java:
<%@page import="usermanager.*" %>
[...]
<jsp:useBean id="userTable" class="usermanager.UserTable" />
<% if(userTable.hasUsers()) { %>
<table>
[...]
   <% for(User user : userTable.users) { %>
   <tr>
      <td><p><%= user.getUsername() %></p></td>
      <td><p><%= user.getPassword() %></p></td>
      <td><p><%= user.getAdded() %></p></td>
      <td><p><a href="edituser.jsp?id=<%= user.getId() %>">bearbeiten</a></p></td>
      <td><p><a href="deleteuser.jsp?id=<%= user.getId() %>">löschen</a></p></td>
   </tr>
   <% } %>
</table>
<% } %>

Kann mir jemand sagen, wie ich das ganze auf JSTL umstricke? Oder verstehe ich die JSTL falsch und die Funktioniert nur auf XML-Ebene?

Danke schonmal
 
Zuletzt bearbeitet:

P4G0

Mitglied
Hab gestern doch noch eine Lösung (über Google ;)) gefunden: Use ForEach to Loop Through ArrayList : ForEachJSTLJava Tutorial

Nachdem ich 12 Stunden lang am Stück programmiert habe, waren meine Google-Fähigkeiten wohl eingeschränkt :autsch:

Aber eine Frage habe ich noch: Gibt es eine Möglichkeit, JSTL mit normalen Methoden-Aufrufen zu nutzen, sodass ich nicht immer eine Wrapper-Klasse mit Gettern und Settern schreiben muss?

Ich habe in der Richtung die Runtime-Version der Core-Bibliothek gefunden (core_rt), finde aber keine Beispiele mit Methodenaufrufen, sondern nur z.B. mit Zugriffen auf Indizes eines Arrays oder ähnlichem.
 
M

maki

Gast
Soviel ich weiss sind die JSTL Tags auf die JavaBEan Spek. angewiesen.
Ist aber cniht wqirklich schlimm, dnen an dieser Stelle solltest du sowieso nur "dumme" Beans einsetzen ;)

Ach ja, bevor ich es vergesse: JSP ist ein Auslaufmodell, bald nur noch für "legacy" Apps relevant.
 

P4G0

Mitglied
Hab mir die Seite nochmmal gründlich durchgelesen, Methoden kann man mit der RT-Version anscheinend doch nutzen:
Java:
<c_rt:out value='<%= list[list.size()-1] %>'/>
Wird dort als valides Beispiel angegeben.

Wieso sollte JSP auslaufen? Kannst du das näher erläutern und evtl. mit ner Quelle untermauern?
 
Zuletzt bearbeitet:
M

maki

Gast
Methoden kann man mit der TT-Version anscheinend doch nutzen:
k.A. was du mit "TT Version" meinst, aber in Scriplets konnte man schon immer alles nutzen, aber Scriptlets sind ja auch Java und deswegen Böse in JSPs.
Als Alternative gibt es die EL (Expression Language).
Wieso sollte JSP auslaufen? Kannst du das näher erläutern und evtl. mit ner Quelle untermauern?
Klar, mit der nächsten Version von JEE (6) werden Facelets anstatt JSPs zur Standard View Technologie, JSP wird nicht mehr weiterentwickelt.
 

P4G0

Mitglied
Also in meiner JSP kommt nun kaum noch Scriptlet-Code vor, das Beispiel von oben sieht nun so aus:
Java:
<%@page import="webdemo.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% pageContext.setAttribute("userTable", new UserTable()); %>
<c:if test="${userTable.filled}">
	<table>
		<c:forEach items="${userTable.users}" var="user">
		<tr>
			<td><p>${user.username}</p></td>
			<td><p>${user.password}</p></td>
			<td><p>${user.added}</p></td>
			<td><p><a href="index-good.jsp?delete=${user.id}">löschen</a></p></td>
		</tr>
		</c:forEach>
</table>
</c:if>
Ist also eine Mischung aus JSTL und EL. Was mich nun halt stört ist, dass ich eine Methode getFilled() anlegen muss, damit ich per JSTL auslesen kann, ob die ArrayList schon Einträge hat. Da würde ich lieber eine Methode wie isFilled() haben, nur das entspricht ja wieder nicht den Beans...
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JSTL - foreach Schleife ? Web Tier 3
D JSP Programm geht einfach nicht in If-Schleife rein Web Tier 7
A [JSF 2.0] Ausgabe aus Schleife bzw. einer ArrayList Web Tier 9
R JSP JSTL <x:if> <c:if> string vergleichen Web Tier 2
J JSP JSTL <c:url> - jsessionid auslesen Web Tier 1
C jstl: collection property auf mehrere seiten Web Tier 2
J JSP JSTL innerhalb Tag-Attribut Web Tier 3
A javax/servlet/jsp/jstl/core/Config Web Tier 1
ruutaiokwu jstl-basierendes tag in jsf 2.0. facelets/xhtml? Web Tier 5
H jstl variable setzen? Web Tier 9
W Java code aus JSP-File durch JSTL code ersetzen Web Tier 8
J JSTL-Vergleich (choose) innerhalb JSF-Datentabellen-Aufbau greift nicht Web Tier 4
L Struts JSTL Form Variable Übermitteln Web Tier 2
sliwalker forEach und Scriptlet: Daten aus Scriptlet in jstl sehen Web Tier 2
megachucky JSF - JSTL Library wird nicht gefunden Web Tier 4
T Per JSTL aus 0,45 --> 45 machen Web Tier 2
G [JAVA / JSP] ArrayList in JSTL foreach verarbeiten Web Tier 4
AyKay i18n JSTL Verknüpfung mir der JAR. Wie? Web Tier 9
W JSTL SQL Driver? Web Tier 11
W JSTL macht Probleme Web Tier 6
G Mit JSTL Rückgabe von Bean Methode ausgeben Web Tier 3
G Session in Servlet Starten und mit JSTL auslesen Web Tier 2
A JSTL Tags funktionieren nicht in Facelets/MyFaces Web Tier 3
OSteNfanT Verzweifle an JSTL Web Tier 2
L Validation über ManagedBeans Web Tier 7
K Internationalisierung über Properties Datei Web Tier 6
P JSF ArrayList über InputText befüllen Web Tier 10
S Ich brauche Buchempfehlung über JSP und Servlet Web Tier 2
M JSF Actions über Methodenrückgabe? Web Tier 3
P JSP: Liste in Bean über Session aufbauen Web Tier 6
E JSF Applikation läuft nicht über Tomcat Web Tier 3
M Velocity - Dropdown-Felder über Macro generieren Web Tier 4
M Ton wiedergabe über jsp-Seite Web Tier 2
R Datenbankzugriff über JSP mit JDBC connector ! Web Tier 2
G JSF h:form Tag Login über j_security_check und weiterleiten Web Tier 5
R Array oder Listen einlesen mit JSF über javaserverpage Web Tier 2
G Dateiupload über JSF? Web Tier 5
G Überblick über Web-Technologien Web Tier 2
M Authentifizierung über PhaseListener je nach Seite Web Tier 11

Ähnliche Java Themen

Neue Themen


Oben