You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Bill Davidson <bi...@gmail.com> on 2011/02/02 23:03:54 UTC

Missing something with custom tags.

version "1.6.0_20", Java(TM) SE Runtime Environment (build 
1.6.0_20-b02), Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed 
mode)
Tomcat: 6.0.26

I'm having trouble with a custom tag and I've tried to reduce the 
problem to its most basic form:

/WEB-INF/tags/example.tag:

<%@tag %>
<%@attribute name="xName" required="true" rtexprvalue="true" %>
<h1>xName="${xName}"</h1>

/jsp/Example.jsp:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd">
<%@page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8" %>
<%@taglib prefix="ex" tagdir="/WEB-INF/tags" %>
<html>
<body>
<ex:example xName="Testing Example" />
</body>
</html>

I usually get:

You have run into a org.apache.jasper.JasperException: 
/jsp/Example.jsp(6,4) Unable to find setter method for attribute: xName 
error.

But sometimes I get this:

You have run into a java.lang.ClassNotFoundException: 
org.apache.jsp.jsp.Example_jsp error.

Any idea what I'm doing wrong?  From what I can see, my code seems to mirror
examples I've found in books and on the web.  Intermittent results 
suggest a race
condition to me though that seems odd here.  I've not had good luck with 
google on
this error.

Full stack traces for the exceptions here:

Feb 2, 2011 1:55:02 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /jsp/Example.jsp(6,4) Unable to find 
setter method for attribute: xName
         at 
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
         at 
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
         at 
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
         at 
org.apache.jasper.compiler.Generator$GenerateVisitor.evaluateAttribute(Generator.java:2809)
         at 
org.apache.jasper.compiler.Generator$GenerateVisitor.generateSetters(Generator.java:3032)
         at 
org.apache.jasper.compiler.Generator$GenerateVisitor.generateCustomDoTag(Generator.java:2452)
         at 
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1736)
         at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
         at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
         at 
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
         at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
         at org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
         at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
         at 
org.apache.jasper.compiler.Generator.generate(Generator.java:3440)
         at 
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:231)
         at org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
         at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
         at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
         at 
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
         at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
         at 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
         at 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
         at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
         at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)
         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
         at 
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
         at 
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
         at 
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
         at 
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
         at 
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
         at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
         at java.lang.Thread.run(Thread.java:619)

Feb 2, 2011 1:55:29 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.ClassNotFoundException: org.apache.jsp.jsp.Example_jsp
         at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
         at 
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134)
         at 
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
         at 
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:628)
         at 
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:144)
         at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
         at 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
         at 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
         at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
         at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)
         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
         at 
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
         at 
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
         at 
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
         at 
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
         at 
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
         at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
         at java.lang.Thread.run(Thread.java:619)


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Missing something with custom tags.

Posted by Bill Davidson <bi...@gmail.com>.
On 2/2/2011 2:33 PM, Mark Thomas wrote:
 >Please don't. This is a community that discusses issues *on the mailing
 >list* so everyone can benefit from reading the archives.

Yep.  Besides, someone already gave the correct answer, though it seems
like a subtle and odd error.

Now if I could just find something for tags that does the equivalent of
what 'trimDirectiveWhitespaces="true"' does in the page directive.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Missing something with custom tags.

Posted by Mark Thomas <ma...@apache.org>.
On 02/02/2011 22:25, Martin Gainty wrote:
> 
> need to see the tld declaration for your tags

There is none. It is implicit. You need to read the JSP spec.

> and the Java class declared for the tag

It is a tag file - there is none. Again, you need to read the JSP spec.

> pls ping me offline

Please don't. This is a community that discusses issues *on the mailing
list* so everyone can benefit from reading the archives.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: Missing something with custom tags.

Posted by Martin Gainty <mg...@hotmail.com>.
need to see the tld declaration for your tags
and the Java class declared for the tag

pls ping me offline

Martin 
______________________________________________ 
Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
 
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité pour le contenu fourni.




> Date: Wed, 2 Feb 2011 14:03:54 -0800
> From: billdsd@gmail.com
> To: users@tomcat.apache.org
> Subject: Missing something with custom tags.
> 
> version "1.6.0_20", Java(TM) SE Runtime Environment (build 
> 1.6.0_20-b02), Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed 
> mode)
> Tomcat: 6.0.26
> 
> I'm having trouble with a custom tag and I've tried to reduce the 
> problem to its most basic form:
> 
> /WEB-INF/tags/example.tag:
> 
> <%@tag %>
> <%@attribute name="xName" required="true" rtexprvalue="true" %>
> <h1>xName="${xName}"</h1>
> 
> /jsp/Example.jsp:
> 
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
> "http://www.w3.org/TR/html4/strict.dtd">
> <%@page language="java" contentType="text/html; charset=UTF-8" 
> pageEncoding="UTF-8" %>
> <%@taglib prefix="ex" tagdir="/WEB-INF/tags" %>
> <html>
> <body>
> <ex:example xName="Testing Example" />
> </body>
> </html>
> 
> I usually get:
> 
> You have run into a org.apache.jasper.JasperException: 
> /jsp/Example.jsp(6,4) Unable to find setter method for attribute: xName 
> error.
> 
> But sometimes I get this:
> 
> You have run into a java.lang.ClassNotFoundException: 
> org.apache.jsp.jsp.Example_jsp error.
> 
> Any idea what I'm doing wrong?  From what I can see, my code seems to mirror
> examples I've found in books and on the web.  Intermittent results 
> suggest a race
> condition to me though that seems odd here.  I've not had good luck with 
> google on
> this error.
> 
> Full stack traces for the exceptions here:
> 
> Feb 2, 2011 1:55:02 PM org.apache.catalina.core.StandardWrapperValve invoke
> SEVERE: Servlet.service() for servlet jsp threw exception
> org.apache.jasper.JasperException: /jsp/Example.jsp(6,4) Unable to find 
> setter method for attribute: xName
>          at 
> org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
>          at 
> org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
>          at 
> org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
>          at 
> org.apache.jasper.compiler.Generator$GenerateVisitor.evaluateAttribute(Generator.java:2809)
>          at 
> org.apache.jasper.compiler.Generator$GenerateVisitor.generateSetters(Generator.java:3032)
>          at 
> org.apache.jasper.compiler.Generator$GenerateVisitor.generateCustomDoTag(Generator.java:2452)
>          at 
> org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1736)
>          at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
>          at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
>          at 
> org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
>          at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
>          at org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
>          at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
>          at 
> org.apache.jasper.compiler.Generator.generate(Generator.java:3440)
>          at 
> org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:231)
>          at org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
>          at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
>          at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
>          at 
> org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
>          at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
>          at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
>          at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
>          at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>          at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>          at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>          at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>          at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>          at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>          at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>          at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)
>          at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>          at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
>          at 
> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
>          at 
> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
>          at 
> org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
>          at 
> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
>          at 
> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
>          at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>          at java.lang.Thread.run(Thread.java:619)
> 
> Feb 2, 2011 1:55:29 PM org.apache.catalina.core.StandardWrapperValve invoke
> SEVERE: Servlet.service() for servlet jsp threw exception
> java.lang.ClassNotFoundException: org.apache.jsp.jsp.Example_jsp
>          at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
>          at java.security.AccessController.doPrivileged(Native Method)
>          at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>          at 
> org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134)
>          at 
> org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
>          at 
> org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:628)
>          at 
> org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:144)
>          at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
>          at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
>          at 
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
>          at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>          at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>          at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>          at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>          at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>          at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>          at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>          at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)
>          at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>          at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
>          at 
> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
>          at 
> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
>          at 
> org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
>          at 
> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
>          at 
> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
>          at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>          at java.lang.Thread.run(Thread.java:619)
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
> 
 		 	   		  

Re: Missing something with custom tags.

Posted by Bill Davidson <bi...@gmail.com>.
On 2/2/2011 2:17 PM, Konstantin Kolinko wrote:
 >I think you are bumping into JavaBeans capitalization rules. Rename
 >your attribute to be "xname" or "xxName".

That worked!  Thanks!

I think that's a pretty weird thing.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Missing something with custom tags.

Posted by Bill Davidson <bi...@gmail.com>.
On 2/2/2011 2:17 PM, Konstantin Kolinko wrote:
 >I think you are bumping into JavaBeans capitalization rules. Rename
 >your attribute to be "xname" or "xxName".

That worked.  Weird.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Missing something with custom tags.

Posted by Konstantin Kolinko <kn...@gmail.com>.
2011/2/3 Bill Davidson <bi...@gmail.com>:

> Unable to find setter method for attribute: xName error.

I think you are bumping into JavaBeans capitalization rules. Rename
your attribute to be "xname" or "xxName".

IIRC, setXName( ) means that the property name is "XName", not "xName".

More details should be in the JavaBeans spec,
http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html


Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org