# TagLib und Referenzen zwischen Klassen



## Marsman (7. Sep 2007)

Hallo Ihr!

Ich bin Neuling bei der Programmierung mit JSP und TagLibs. Das ganze funktioniert schon prima und ich finde die Trennung von HTML und Java durch die TagLibs sehr gut. Nun habe ich vor, mit einem Tag eine Datenbankabfrage durchzuführen und mit darin geschachtelten weiteren Tags die Daten anzuzeigen. Ich stelle mir das in etwa so vor:


```
<table>
<abc:select table="addresses">
  <tr>
    <td><abc:column col="id" />
    <td><abc:column col="name" />
  </tr>
</abc:select>
</table>
```

Unter dem Tag select befindet sich eine Klasse, die Datensätze aus einer Datenbank abruft und per Iteration den Teil bis zum End-Tag wiederholt. Unter dem column-Tag befindet sich eine Klasse, die aus dem ResultSet die Daten ausließt. Mein Problem ist nun: Wie erhalte ich eine Referenz auf dieses ResultSet, das sich ja in der Select-Klasse befindet?? Oder ist mein Ansatz insgesamt nicht sinnvoll??

Titus

PS: Die Namen select und column sind hier nur als Beispiel gewählt.


----------



## matbach (9. Sep 2007)

Du kannst das Result-Set z.B. im PageContext ablegen. Auf diesen hast Du in jedem tag Zugriff.
Ausserdem kannst Du dir vom inneren Tag immer das Parent-Tag geben lassen. FindAnchwestor ...


----------



## byte (9. Sep 2007)

Warum nicht gleich mit JSTL?

http://java.sun.com/javaee/5/docs/tutorial/doc/JSTL7.html#wp63722


----------



## Marsman (10. Sep 2007)

byto hat gesagt.:
			
		

> Warum nicht gleich mit JSTL?



Ich kannte das noch garnicht. Eigentlich wollte ich aber View (JSP) und Code (Java) nach Möglichkeit getrennt halten. Wie auch immer, ich habe mir das Tutorial mal ausprobiert. Leider habe ich es nach meheren Stunden nicht geschaft, eine Verbindung zur Datenbank zu bekommen:


```
javax.servlet.ServletException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc/TestDb"
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
	org.apache.jsp.test_jsp._jspService(test_jsp.java:88)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
```


Ich verwende Eclipse mit JBoss 4.0. Den MySQL-Connector habe ich nach C:\Programme\jboss-4.0.5.GA\server\default\lib kopiert. Im Deployment-Verzeichnis habe ich eine Datasource-XML erstellt. Mein JSP sieht ungefär so aus:



```
%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<sql:setDataSource dataSource="jdbc/TestDb" />
	<sql:query var="books" >
  		select * from PUBLIC.test
	</sql:query> 
	<c:forEach var="book" begin="0" items="${books.rows}">
  		

${book.text}</p>
	</c:forEach> 
</body>
</html>
```


Ich wäre echt froh, wenn mir da nochmal jemand helfen könnte. Zunächst mal würde ich gerne wissen wollen, ob ich die Datesource in JBoss oder im darin integrierten Tomcat konfigurieren muss. Ich habe beides probiert, geht aber auch nicht. :cry: 


Titus


----------



## fehlerfinder (26. Sep 2007)

byto hat gesagt.:
			
		

> http://java.sun.com/javaee/5/docs/tutorial/doc/JSTL7.html#wp63722


muss wohl (ist das dann die Seite, die du meinst?) ein aktualisierter Link sein: Chapter 7 - JavaServer Pages Standard Tag Library


----------

