Dynamische Werte in eigenen Tag-Attributen

Dario Linsky

Erfahrenes Mitglied
Holla,

ich sitz jetzt schon die ganze Nacht daran, aber irgendwie komm ich nicht so ganz damit weiter.
Ich hab eine eigene Taglib erstellt, die funktioniert auch wunderbar. Bis zu dem Punkt, an dem ich einem der Attribute des Tags einen automatisierten Wert geben will:
Code:
<%@ taglib uri="/WEB-INF/mytaglib.tld" prefix="tag" %>
<%-- ... --%>
<tag:myTag attribut="<%= (String)request.getParameter("param") %>" />

Laut Sun's Tutorial zu Taglibs müsste das eigentlich funktionieren, bei mir gibt's aber immer nur eine Fehlermeldung:
java.lang.NumberFormatException: For input string: "<%= (String)request.getParameter("param") %>"

Liegt das am Tomcat oder an mir? Irgendwie muss das doch machbar sein... :(
 
Hallo!

Code:
"<%= (String)request.getParameter("param") %>"

"(String)" brauchst du nicht, da %= nachher im Servlet durch einen Aufruf von
print("blablabla")  auf einem PrintStream abgebildet wird.

Das mit der NumberFormatException ist seltsam ... kann es vielleicht sein, dass der Fehler eine Zeile obendrüber liegt?

//Nachtrag:

Kann es sein, dass dein Eigendefinierter tag eine Zahl / int ... blablablka verlangt?
Dann ist der Fehler klar... denn der code, der von deiner JSP Page erfolgt würde dann so aussehen ...

Code:
int myAttribute = ....

.....

myAttribute = (String) request.getParameter("param");

schau da mal nach, dass müsstest du dann anders regeln..


Gruß Tom
 
Zuletzt bearbeitet:
In dem JSP selbst hab ich bis jetzt eigentlich nur reines HTML und zwei Zeilen Code: den Link zur Taglib und die Aktion daraus. Woanders kann der Fehler also eigentlich nicht liegen, denke ich mal.
Was den Typ des Attributs angeht, das ist schon ein normales int und kein String. :rolleyes:
Entsprechend hab ich das jetzt mal geändert und auch mit einem Casting zum int-Typ versucht, aber das Problem hab ich noch immer.

Hier mal der gesamte Stacktrace der Exceptions (sind zwei):
Code:
org.apache.jasper.JasperException: Unable to compile class for JSP
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:478)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
	at java.lang.Thread.run(Thread.java:534)
Code:
java.lang.NumberFormatException: For input string: "<%= request.getParameter("param") %>"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:468)
	at java.lang.Integer.valueOf(Integer.java:574)
	at org.apache.jasper.compiler.Generator$GenerateVisitor.convertString(Generator.java:1823)
	at org.apache.jasper.compiler.Generator$GenerateVisitor.generateSetters(Generator.java:1761)
	at org.apache.jasper.compiler.Generator$GenerateVisitor.generateCustomStart(Generator.java:1356)
	at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1179)
	at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:707)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1028)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:1070)
	at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:1076)
	at org.apache.jasper.compiler.Node$Root.accept(Node.java:232)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1028)
	at org.apache.jasper.compiler.Generator.generate(Generator.java:1917)
	at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:242)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:369)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:473)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:190)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
	at java.lang.Thread.run(Thread.java:534)

Wie ich das sonst regeln sollte, weiss ich ehrlich gesagt nicht. :rolleyes:
 

Neue Beiträge

Zurück