DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13223>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13223 JSP pages in XML syntax do not compile properly Summary: JSP pages in XML syntax do not compile properly Product: Tomcat 4 Version: 4.1.12 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Normal Priority: Other Component: Jasper 2 AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] When using the XML syntax for JSP pages, compile errors are thrown whenever an XML-syntax JSP tag is used to apply an attribute value as in this JSP page: ____________________________________________________________________ This JSP fails: ____________________________________________________________________ <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"> <jsp:directive.page language="java" import="java.text.*" session="false" isThreadSafe="true" isErrorPage="false" /> <jsp:scriptlet> java.text.Annotation recordDetails = new java.text.Annotation("This is a test value"); pageContext.setAttribute("recordDetails", recordDetails, PageContext.PAGE_SCOPE); </jsp:scriptlet> <html> <head> <title><jsp:expression>System.getProperty("java.io.tmpdir") </jsp:expression></title> </head> <body> <table class="EntryFormContainer" cols="6" cellpadding="1" cellspacing="1" border="0"> <tr> <td align="right">Case ID:</td> <td align="left" colspan="7"><input type="text" name="caseID" READONLY="true" value='<jsp:getProperty name="recordDetails" property="value" />' class="DisabledField"/></td> </tr> </table> </body> </html> </jsp:root> ____________________________________________________________________ This JSP works: ____________________________________________________________________ <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"> <jsp:directive.page language="java" import="java.text.*" session="false" isThreadSafe="true" isErrorPage="false" /> <jsp:scriptlet> java.text.Annotation recordDetails = new java.text.Annotation("This is a test value"); pageContext.setAttribute("recordDetails", recordDetails, PageContext.PAGE_SCOPE); </jsp:scriptlet> <html> <head> <title><jsp:expression>System.getProperty("java.io.tmpdir") </jsp:expression></title> </head> <body> <table class="EntryFormContainer" cols="6" cellpadding="1" cellspacing="1" border="0"> <tr> <td align="right">Case ID:</td> <td align="left" colspan="7"><input type="text" name="caseID" READONLY="true" value="" class="DisabledField"/><jsp:getProperty name="recordDetails" property="value" /></td> </tr> </table> </body> </html> </jsp:root> ____________________________________________________________________ This JSP also fails: ____________________________________________________________________ <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"> <jsp:directive.page language="java" import="java.text.*" session="false" isThreadSafe="true" isErrorPage="false" /> <jsp:scriptlet> java.text.Annotation recordDetails = new java.text.Annotation("This is a test value"); pageContext.setAttribute("recordDetails", recordDetails, PageContext.PAGE_SCOPE); </jsp:scriptlet> <html> <head> <title><jsp:expression>System.getProperty("java.io.tmpdir") </jsp:expression></title> </head> <body> <table class="EntryFormContainer" cols="6" cellpadding="1" cellspacing="1" border="0"> <tr> <td align="right">Case ID:</td> <td align="left" colspan="7"><input type="text" name="caseID" READONLY="true" value='jsp:getProperty name="recordDetails" property="value"' class="DisabledField"/></td> </tr> </table> </body> </html> </jsp:root> Several additional variations on the above themes also fail. The spec appears to support the first JSP example. On the chance that I might have misread the spec, I also tried it without the < and />, this variation also fails. It may be worth noting that this exact same example JSP works, as long as the jsp:root tag is removed and the page, scriptlet, and expression tags are replaced with their non-XML equivalents as follows: <%@page language="java" import="java.text.*" session="false" isThreadSafe="true" isErrorPage="false" %> <% java.text.Annotation recordDetails = new java.text.Annotation("This is a test value"); pageContext.setAttribute("recordDetails", recordDetails, PageContext.PAGE_SCOPE); %> <html> <head> <title><%=System.getProperty("java.io.tmpdir")%></title> </head> <body> <table class="EntryFormContainer" cols="6" cellpadding="1" cellspacing="1" border="0"> <tr> <td align="right">Case ID:</td> <td align="left" colspan="7"><input type="text" name="caseID" READONLY="true" value='<jsp:getProperty name="recordDetails" property="value" />' class="DisabledField"/></td> </tr> </table> </body> </html> In summary, it appears that the XML syntax is not supported in attribute value assignment. The exception thrown is as follows (Note the problem in property lookup, this may be another, unrelated, bug). type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Unable to compile class for JSP at org.apache.jasper.JspCompilationContext.compile (JspCompilationContext.java:479) at org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:184) at org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:289) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240) 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:260) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex t(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.invokeNex t(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:2396) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex t(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke (ErrorDispatcherValve.java:170) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex t(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex t(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.invokeNex t(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:223) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:405) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnectio n(Http11Protocol.java:380) at org.apache.tomcat.util.net.TcpWorkerThread.runIt (PoolTcpEndpoint.java:508) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.java:533) at java.lang.Thread.run(Thread.java:484) root cause java.lang.NullPointerException at java.util.Hashtable.get(Hashtable.java:320) at java.util.PropertyResourceBundle.handleGetObject (PropertyResourceBundle.java:105) at java.util.ResourceBundle.getObject(ResourceBundle.java:376) at java.util.ResourceBundle.getString(ResourceBundle.java:354) at org.apache.jasper.compiler.ErrorDispatcher.getString (ErrorDispatcher.java:364) at org.apache.jasper.compiler.ErrorDispatcher.dispatch (ErrorDispatcher.java:398) at org.apache.jasper.compiler.ErrorDispatcher.jspError (ErrorDispatcher.java:245) at org.apache.jasper.compiler.JspDocumentParser.parse (JspDocumentParser.java:167) at org.apache.jasper.compiler.ParserController.parse (ParserController.java:193) at org.apache.jasper.compiler.ParserController.parse (ParserController.java:153) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:219) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:323) at org.apache.jasper.JspCompilationContext.compile (JspCompilationContext.java:474) at org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:184) at org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:289) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240) 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:260) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex t(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.invokeNex t(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:2396) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex t(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke (ErrorDispatcherValve.java:170) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex t(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNex t(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.invokeNex t(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:223) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:405) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnectio n(Http11Protocol.java:380) at org.apache.tomcat.util.net.TcpWorkerThread.runIt (PoolTcpEndpoint.java:508) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.java:533) at java.lang.Thread.run(Thread.java:484) -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>