Hide Forgot
Description of problem: In Petclinic example, the following code is broken: <h2><c:if test="${owner.new}">New </c:if>Owner:</h2> where Owner is a POJO Entity and isNew() boolean is available on its ancestor. Similar call of isNew method is used for Pet and Visit entity too. It happens because 'new' is reserved java keyword, which is now correctly recognized by EL parser. Version-Release number of selected component (if applicable): EAP DR12, WFK Demo DR07 How reproducible: Always. Steps to Reproduce: 1. Deploy petclinic.war 2. Go to find owners 3. Try to add an owner Actual results: ** Root cause is: /WEB-INF/jsp/owners/form.jsp(8,4) "${owner.new}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${owner.new}] org.apache.jasper.JasperException: /WEB-INF/jsp/owners/form.jsp(8,4) "${owner.new}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${owner.new}] 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:198) at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1216) at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:862) at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530) at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2377) at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2427) at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2433) at org.apache.jasper.compiler.Node$Root.accept(Node.java:495) at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2377) at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1793) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:360) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:607) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:312) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:734) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:541) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:479) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:407) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:151) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) at java.lang.Thread.run(Thread.java:679) Cookies: JSESSIONID=[uiwxNiYQ02qlL+c8VEOWzvqf] Expected results: It passes. Additional info: see: https://bugzilla.redhat.com/show_bug.cgi?id=769624
I've just find out that using ${owner.isNew()} is not working when petclinic.war is deployed on ews1-t5 and ews1-t6. Thus, quick fix can be ${owner['new']}. The following error occurs if using ${owner.isNew()} expression: org.apache.jasper.JasperException: /WEB-INF/jsp/owners/form.jsp(4,4) The function isNew must be used with a prefix when a default namespace is not specified 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.Validator$ValidateVisitor$1FVVisitor.visit(Validator.java:1506) at org.apache.jasper.compiler.ELNode$Function.accept(ELNode.java:129) at org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200) at org.apache.jasper.compiler.ELNode$Visitor.visit(ELNode.java:242) at org.apache.jasper.compiler.ELNode$Root.accept(ELNode.java:56) at org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200) at org.apache.jasper.compiler.Validator$ValidateVisitor.validateFunctions(Validator.java:1531) at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1176) at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:846) 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.Validator.validateExDirectives(Validator.java:1763) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198) 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:326) 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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 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.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 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.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:679)
The fix is at http://git.app.eng.bos.redhat.com/?p=wfk/examples.git;a=commit;h=1c8320b59c4aa192e0b6c0dc33fa450a41a4ee7b
Not fixed for all the occurences in the example.
Cannot reproduce on EAP6 ER3.
(i.e. trying with visit or pet)
OK, this is an *EWS* issue.
Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: The Petclinic application uses JSTL expressions which may fail to evaluate in environments that use newer Unified EL implementations. The expressions known to be in violation are: ${visit.new} found in src/main/webapp/WEB-INF/jsp/pets/visitForm.jsp and ${pet.new} found in src/main/webapp/WEB-INF/jsp/pets/form.jsp. If encountering an error message of the form: ${<variable>.new}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${<variable>.new}], any occurrence of ${<variable>.new} needs to be replaced with ${<variable>['new']} For details, please consult the owner.jsp page of the same application.
Marius, will we fix that issue/all occurences in owner.jsp file?
Technical note updated. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. Diffed Contents: @@ -6,4 +6,4 @@ any occurrence of ${<variable>.new} needs to be replaced with ${<variable>['new']} -For details, please consult the owner.jsp page of the same application.+For details, please consult the src/main/webapp/WEB-INF/jsp/owners/form.jsp page of the same application.
Fixed
Fixed by http://git.app.eng.bos.redhat.com/?p=wfk/examples.git;a=commitdiff;h=4698bf4e2de36687935c133f695bbd9f3b0ea830
Verified in WFK 2.1.0.ER2
Distributed as a part of WFK 2.1.0.GA release.