# Problem mit sql:query [JSTL]



## Jockel (21. Nov 2004)

Ich versuche mittels der JSTL eine Datenbank abzufragen und mir die Ergebnisse ausgeben zu lassen. Der Code dazu sieht wie folgt aus:


```
<sql:query var="rs">
select * from user
</sql:query>

<c:forEach var="row" items="${rs.rows}">
<c:out value="${row.value}">
</c:forEach>
```

Nur wird jetzt leider lediglich "${row.value}" ausgegeben, also der String an sich wie er da steht und kein Wert aus der DB.
Mittlerweile gehen mir echt die Ideen aus (zumal ich das erste Mal mit JSTL arbeite). 
- Die Verbindung zur Datenbank steht (ein Einfügen von Tabellen mittels <sql:update> funktioniert einwandfrei).
- Es wird kein Fehler ausgegeben und auch keine Exception geworfen.
- Sämtlicher Code den ich mir angesehen habe scheint es genauso zu machen. (Letztendlich habe ich den kurzen Code abgeschrieben).

Nun bin ich mir nicht mal sicher, ob der Fehler an sql:query liegt oder woanders. Wäre echt dankbar, wenn mir da jemand irgendwie weiterhelfen könnte.


----------



## Jockel (22. Nov 2004)

Nach langem probieren bin ich selber dahinter gekommen. Und zwar fehlte in der web.xml:

```
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
    version="2.4">
```
Da hatte ich nur <web-app> stehen. Hatte also nicht mit sql:query zu tun. Warum sowas aber nirgends richtig dokumentiert ist, ist mir schleierhaft.


----------



## Bleiglanz (22. Nov 2004)

Wieso soll das nicht dokumentiert sein?


> NOTE: Standard-1.1 (JSTL 1.1) requires a JSP container that supports the Java Servlet 2.4 and JavaServer Pages 2.0 specifications.


z.B. auf der Startseite (!) der jakarta taglib

Aber wegen


> - Die Verbindung zur Datenbank steht (ein Einfügen von Tabellen mittels <sql:update> funktioniert einwandfrei).


wundert mich deine "Lösung" doch sehr...


----------



## Jockel (23. Nov 2004)

Hm, mit "nirgends richtig dokumentiert" meinte ich eher, dass nicht explizit darauf hingewiesen wurde. Und selbst, wenn man mir das von dir gebrachte Zitat präsentiert hätte, wäre ich dennoch nicht darauf gekommen, dass ich im web-app-Tag noch einige Parameter einfügen muss. Ergo: für einen Anfänger mag die Dokumentation vielleicht nicht ausreichend sein. (denke, dieser Satz ist besser formuliert, denn letztendlich war es mein eigenes Unvermögen...)
Und gerade die Tatsache, das einige Teile der JSTL wirklich funktioniert haben (sql:update), liess mich zunächst auch nicht vermuten, dass ich einen Fehler bei der Einrichtung gemacht habe.
Wie dem auch sei, wieder was gelernt, denn einige Fehler macht man kein zweites Mal mehr ;-)


----------



## Bleiglanz (24. Nov 2004)

Ich stimme dir zu was die Doku zu Servlets/Jsp usw. betrifft; kann aber noch immer kaum glauben, dass

<sql:update> funktioniert ohne Schema-Angabe, <cut> aber nicht 

hast du wirklich sonst nichts verändert?


----------



## Jockel (24. Nov 2004)

Ich habe das eben noch einmal getestet: mit der Schema-Angabe funktionieren sowohl cut als auch sql:update und wenn ich das Schema rausnehme (ohne sonstige Modifikationen) funktioniert nur noch sql:update und cut nicht mehr.


----------



## Bleiglanz (25. Nov 2004)

da gilt dann wohl: unglaublich, aber wahr!

Ein weiterer Fallstrick für alle Anfänger, ich vermute mal es liegt an der EL, d.h. an den Ausdrücken ${bean.prop}, die nur in der 2.4er zur Verfügung stehen...


----------

