Details
-
Bug
-
Status: Closed
-
TBD
-
Resolution: Cannot Reproduce
-
Reporting 0.6.2
-
None
-
Undetermined
-
Description
The following steps to reproduce:
1. Log in as administrator.
2. Click 'Administration' from the main toolbar.
3. Under 'Manage Report Definitions', click 'Data Set Definitions'.
4. Click the plus sign next to 'Simple Patient DataSet' to add a new Simple Row Per Patient DataSet.
It worked with Tomcat 6. Did not work with Tomcat 7+.
Logic and Data Export Data Sets pages worked as expected. The other data sets pages did not. Other helpful information below.
OpenMRS Version: 1.8.3 Build 24510
Application server name and version: Apache Tomcat 7.0.26
Username of the user currently logged in: admin
The implementation id of this installation (if defined)
Names and versions of all installed modules
Serialization Xstream 0.2.5
Logic Module 0.5
Reporting 0.6.2
HTML Form Entry 1.7.3
BIRT Report Module 2.5.1.1
XForms 4.0.7
Reporting Compatibility 1.5.4.1
FormEntry 4.5.9.2
HTML Widgets 1.5.7.1
The error message and stack trace below:
An Internal Error has Occurred
org.apache.jasper.JasperException
/WEB-INF/view/module/reporting/datasets/datasetEditor.jsp (line: 82, column: 7) "${dataSetDefinition.class.name}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${dataSetDefinition.class.name}]
-
- Root cause is: /WEB-INF/view/module/reporting/datasets/datasetEditor.jsp (line: 82, column: 7) "${dataSetDefinition.class.name}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${dataSetDefinition.class.name}] org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:408)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:199)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1218)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:870)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1539)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434)
org.apache.jasper.compiler.Node$Root.accept(Node.java:475)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1790)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:217)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.openmrs.module.web.filter.ForcePasswordChangeFilter.doFilter(ForcePasswordChangeFilter.java:65)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:76)
org.openmrs.module.xforms.web.XformsFilter.doFilter(XformsFilter.java:60)
org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:74)
org.openmrs.module.web.filter.ModuleFilter.doFilter(ModuleFilter.java:58)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.openmrs.web.filter.OpenmrsFilter.doFilterInternal(OpenmrsFilter.java:112)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:83)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:83)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:83)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:662)
- Root cause is: /WEB-INF/view/module/reporting/datasets/datasetEditor.jsp (line: 82, column: 7) "${dataSetDefinition.class.name}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${dataSetDefinition.class.name}] org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
On advise, I have checked - TRUNK-3109 Remove java keywords from jsp - OpenMRS JIRA - https://tickets.openmrs.org/browse/TRUNK-3109 but did not help.
Darius wrote:
"This error is because we're doing something that used to be legal, but as of some more recent version of tomcat (maybe a newer version of the JSP spec) is no longer legal. Specifically, saying "something.class.name" used to do something.getClass().getName().
The fix is to change dataSetDefinition.class.name to dataSetDefinition['class'].name...."
Please attach a patch that fixes this for all the different pages having the problem.