You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-user@tomcat.apache.org by Steve Philp <sp...@ameritech.net> on 2001/03/17 16:29:03 UTC

Newbie problems with JDBC taglib

I'm having a problem using the JDBC taglib (031701.tar.gz, but also
tried 031601.tar.gz) that I'm hoping someone can help me out with...

The page looks like:

<%@ taglib uri="http://jakarta.apache.org/taglibs/jdbc" prefix="sql" %>
<table width="100%">
<tr>
  <th align=left>Customer Name</th>
  <th align=left>Available Reports</th>
</tr>
<sql:connection id="conn" jndiName="java:comp/env/jdbc/advdb"/>
 
<sql:preparedStatement id="stmt1" conn="conn">
        <sql:query>
                SELECT 
			CSCODE, 
			CSNAME 
		FROM 
			CUSTOMER 
		WHERE 
			CSNAME LIKE ? 
			AND SACODE IN (?) 
			AND CSTYPE = 'A' 
		ORDER BY 2
        </sql:query>
 
        <sql:execute>
                <sql:setColumn position="1">
			<%=request.getParameter("Customer") + "%" %>
		</sql:setColumn>
                <sql:setColumn position="2">4</sql:setColumn>
        </sql:execute>
 
        <sql:resultSet id="rs1">
                <tr>
	                <td><sql:getColumn position="1"/></td>
	                <td><sql:getColumn position="2"/></td>
		</tr>
        </sql:resultSet>
</sql:preparedStatement>
</table>
<sql:closeConnection conn="conn"/>


When I execute that page under Resin 1.2.1 (IBM JDK 1.3 on Linux) I get
the following error:

java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagData: method
getAttributes()Ljava/util/Enumeration; not found
        at
org.apache.taglibs.jdbc.resultset.BaseGetterTEI.isValid(BaseGetterTEI.java:78)
        at
com.caucho.jsp.JspGenerator.generateMyTag(JspGenerator.java:747)
        at
com.caucho.jsp.JspGenerator.generateTaglib(JspGenerator.java:713)
        at
com.caucho.jsp.JspGenerator.generateChildren(JspGenerator.java:679)
        at
com.caucho.jsp.JavaGenerator.printTagInstance(JavaGenerator.java:634)
        at
com.caucho.jsp.JspGenerator.generateMyTag(JspGenerator.java:769)
        at
com.caucho.jsp.JspGenerator.generateTaglib(JspGenerator.java:713)
        at
com.caucho.jsp.JspGenerator.generateChildren(JspGenerator.java:679)
        at
com.caucho.jsp.JavaGenerator.printTagInstance(JavaGenerator.java:634)
        at
com.caucho.jsp.JspGenerator.generateMyTag(JspGenerator.java:769)
        at
com.caucho.jsp.JspGenerator.generateTaglib(JspGenerator.java:713)
        at
com.caucho.jsp.JspGenerator.generateChildren(JspGenerator.java:679)
        at com.caucho.jsp.JspGenerator.generate(JspGenerator.java:237)
        at com.caucho.jsp.JspParser.parse(JspParser.java:213)
        at com.caucho.jsp.JspParser.parse(JspParser.java:149)
        at com.caucho.jsp.XtpPage.getJspPage(XtpPage.java:482)
        at com.caucho.jsp.XtpPage.compileJspPage(XtpPage.java:338)
        at com.caucho.jsp.XtpPage.subservice(XtpPage.java:204)
        at com.caucho.jsp.Page.service(Page.java:334)
        at
com.caucho.server.http.Invocation.service(Invocation.java:255)
        at
com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:201)
        at
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:217)
        at
com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:151)
        at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
        at java.lang.Thread.run(Thread.java:498)


What am I doing wrong?


The other problem that I ran across was that the documentation showed
the connection attribute would work as:

	<sql:connection id="conn1" jndiName="java:comp/env/jdbc/advdb">

but that gets me an error about an unknown attribute "jndiname" (yes,
the 'n' switched case).  Change the connection tags to:

	<sql:connection id="conn1">
		<sql:jndiName>java:comp/env/jdbc/advdb</sql:jndiName>
	</sql:connection>

gets it working correctly.  Tried both the 3/16 and 3/17 nightlies just
to see if it was a bug that'd been ironed out since my download.

Thanks for any help you can provide!

-- 
Steve Philp, MCSE/MCP+I
Assistant IS Manager
Advance Packaging Corporation
sphilp@ameritech.net

Re: Newbie problems with JDBC taglib

Posted by Morgan Delagrange <md...@yahoo.com>.
--- Steve Philp <sp...@ameritech.net> wrote:
> I'm having a problem using the JDBC taglib
> (031701.tar.gz, but also
> tried 031601.tar.gz) that I'm hoping someone can
> help me out with...
> 
> The page looks like:
> 
> <%@ taglib
> uri="http://jakarta.apache.org/taglibs/jdbc"
> prefix="sql" %>
> <table width="100%">
> <tr>
>   <th align=left>Customer Name</th>
>   <th align=left>Available Reports</th>
> </tr>
> <sql:connection id="conn"
> jndiName="java:comp/env/jdbc/advdb"/>
>  
> <sql:preparedStatement id="stmt1" conn="conn">
>         <sql:query>
>                 SELECT 
> 			CSCODE, 
> 			CSNAME 
> 		FROM 
> 			CUSTOMER 
> 		WHERE 
> 			CSNAME LIKE ? 
> 			AND SACODE IN (?) 
> 			AND CSTYPE = 'A' 
> 		ORDER BY 2
>         </sql:query>
>  
>         <sql:execute>
>                 <sql:setColumn position="1">
> 			<%=request.getParameter("Customer") + "%" %>
> 		</sql:setColumn>
>                 <sql:setColumn
> position="2">4</sql:setColumn>
>         </sql:execute>
>  
>         <sql:resultSet id="rs1">
>                 <tr>
> 	                <td><sql:getColumn
> position="1"/></td>
> 	                <td><sql:getColumn
> position="2"/></td>
> 		</tr>
>         </sql:resultSet>
> </sql:preparedStatement>
> </table>
> <sql:closeConnection conn="conn"/>
> 
> 
> When I execute that page under Resin 1.2.1 (IBM JDK
> 1.3 on Linux) I get
> the following error:
> 
> java.lang.NoSuchMethodError:
> javax.servlet.jsp.tagext.TagData: method
> getAttributes()Ljava/util/Enumeration; not found
>         at
>
org.apache.taglibs.jdbc.resultset.BaseGetterTEI.isValid(BaseGetterTEI.java:78)
>         at
>
com.caucho.jsp.JspGenerator.generateMyTag(JspGenerator.java:747)
>         at
>
com.caucho.jsp.JspGenerator.generateTaglib(JspGenerator.java:713)
>         at
>
com.caucho.jsp.JspGenerator.generateChildren(JspGenerator.java:679)
>         at
>
com.caucho.jsp.JavaGenerator.printTagInstance(JavaGenerator.java:634)
>         at
>
com.caucho.jsp.JspGenerator.generateMyTag(JspGenerator.java:769)
>         at
>
com.caucho.jsp.JspGenerator.generateTaglib(JspGenerator.java:713)
>         at
>
com.caucho.jsp.JspGenerator.generateChildren(JspGenerator.java:679)
>         at
>
com.caucho.jsp.JavaGenerator.printTagInstance(JavaGenerator.java:634)
>         at
>
com.caucho.jsp.JspGenerator.generateMyTag(JspGenerator.java:769)
>         at
>
com.caucho.jsp.JspGenerator.generateTaglib(JspGenerator.java:713)
>         at
>
com.caucho.jsp.JspGenerator.generateChildren(JspGenerator.java:679)
>         at
>
com.caucho.jsp.JspGenerator.generate(JspGenerator.java:237)
>         at
> com.caucho.jsp.JspParser.parse(JspParser.java:213)
>         at
> com.caucho.jsp.JspParser.parse(JspParser.java:149)
>         at
> com.caucho.jsp.XtpPage.getJspPage(XtpPage.java:482)
>         at
>
com.caucho.jsp.XtpPage.compileJspPage(XtpPage.java:338)
>         at
> com.caucho.jsp.XtpPage.subservice(XtpPage.java:204)
>         at
> com.caucho.jsp.Page.service(Page.java:334)
>         at
>
com.caucho.server.http.Invocation.service(Invocation.java:255)
>         at
>
com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:201)
>         at
>
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:217)
>         at
>
com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:151)
>         at
>
com.caucho.server.TcpConnection.run(TcpConnection.java:140)
>         at java.lang.Thread.run(Thread.java:498)
> 
> 
> What am I doing wrong?

I'm not familiar with Resin, but it looks like your
JSP engine is missing a feature.  If you look at the
Javadocs for Resin:

 
http://www.caucho.com/products/resin/javadoc/javax/servlet/jsp/tagext/TagData.html

it is missing the getAttributes() method proscribed by
the Servlet 2.2 API:

 
http://java.sun.com/products/servlet/2.2/javadoc/javax/servlet/jsp/tagext/TagData.html

Solution: if you're familiar enough with Servlets and
tag libraries, you could download the current CVS,
remove the isValid() method from the BaseGetterTEI
class, and build your own version of the tag.  Just
keep an eye on your usage, since that method performs
valuable validation of the "colName" and "position"
attributes of the getter tags.

> 
> The other problem that I ran across was that the
> documentation showed
> the connection attribute would work as:
> 
> 	<sql:connection id="conn1"
> jndiName="java:comp/env/jdbc/advdb">
> 
> but that gets me an error about an unknown attribute
> "jndiname" (yes,
> the 'n' switched case).  Change the connection tags
> to:
> 
> 	<sql:connection id="conn1">
> 	
>
<sql:jndiName>java:comp/env/jdbc/advdb</sql:jndiName>
> 	</sql:connection>
> 
> gets it working correctly.  Tried both the 3/16 and
> 3/17 nightlies just
> to see if it was a bug that'd been ironed out since
> my download.

Good catch.  I introduced an error when I changed the
capitalization of the jndiName attribute.  It should
work after tonight's build, or feel free to build it
from source.

> Thanks for any help you can provide!
> 
> -- 
> Steve Philp, MCSE/MCP+I
> Assistant IS Manager
> Advance Packaging Corporation
> sphilp@ameritech.net


=====
Morgan Delagrange
Britannica.com

__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail. 
http://personal.mail.yahoo.com/