2012-09-06 36 views
0

我不太知道什麼是錯的表達表達語言異常 - 無法解析簡單的表達

${exception.class.simpleName eq 'AccessDeniedException'}

,但它給了我一個javax.el.ELException

org.apache.jasper.JasperException: /WEB-INF/jsp/exception/AccessDeniedException.jsp (line: 45, column: 28) "${exception.class.simpleName eq 'AccessDeniedException'}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${exception.class.simpleName eq 'AccessDeniedException'}] 
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:1223) 
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:875) 
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.Validator$ValidateVisitor.visit(Validator.java:894) 
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:1795) 
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) 

我使用Tomcat 7作爲Spring的tc Server 2.7的一部分,因此使用javax.el 2.2版本。

+0

我並不像* EL的解析器那樣聰明。請發佈*相關*代碼。 – adatapost

+0

它_is_發佈 - '$ {exception.class.simpleName eq'AccessDeniedException'}'是相關代碼...有一個名爲'exception'的範圍變量,它是'java.lang.Exception'的子類。 –

回答

1

this comment我的一個以前的答案:

到Tomcat 7(所以用JSP EL 2.2),你實際上可以做${foo.getClass().simpleName}和它的作品...

+0

輝煌。我不知道。謝謝。 –

0

感謝JB Nizet。我一直試圖從1周內解決這個問題。

$ {foo.class}在我的同事系統上工作正常,因爲他使用的是Tomcat6,因爲我使用的是Tomcat7,因此我得到「javax.el.E​​LException」。

$ {foo.getClass()}解決了Tomcat7上的問題。