一、报错信息:
javax.el.ELException: Failed to parse the expression [${item.dict_ itemname }]
org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:152)
org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:181)
org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:245)
org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:65)
org.apache.jasper.compiler.Validator$ValidateVisitor.prepareExpression(Validator.java:1642)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:771)
org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:955)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2431)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:919)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1554)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2431)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2437)
org.apache.jasper.compiler.Node$Root.accept(Node.java:467)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375)
org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1869)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:221)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:375)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:335)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:597)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
javax.servlet.http.HttpServlet.service(HttpServlet.java:582)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1271)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
javax.servlet.http.HttpServlet.service(HttpServlet.java:514)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:582)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
二、解析错误信息:
这个错误信息是Java Web应用程序在运行时遇到的一个异常,具体是在解析JSP页面中的EL(Expression Language)表达式时出现了问题,确保属性名是正确的,且没有使用空格或下划线。错误的核心是:
javax.el.ELException: Failed to parse the expression [${item.dict_ itemname }]
这表明在尝试解析${item.dict_ itemname}
这个表达式时失败了。根据给出的异常的根源(Root Cause),这个ParseException
异常表明在解析EL表达式时遇到了一个语法错误。错误的具体位置是在表达式的第1行第14列。解析器在这个位置遇到了一个它没有预期到的标识符itemname
。
根据错误信息,问题可能出现在以下几个方面:
-
EL表达式的语法错误:
${item.dict_ itemname}
这个表达式中的dict_ itemname
可能是不正确的。在EL表达式中,属性名之间应该使用英文句点.
来连接,而不是空格或下划线_
。 -
可能的拼写错误:
dict_ itemname
看起来像是一个属性名,但它可能是由于复制粘贴时的拼写错误,正确的属性名可能应该是dictitemname
(没有空格和下划线)。 -
JSP页面的语法问题:如果这个EL表达式是在一个JSP标签的属性中使用,那么需要确保标签的语法是正确的。
-
服务器的EL解析器问题:虽然较不常见,但也可能是服务器的EL解析器有bug或者配置问题。
三、修改自己代码:
错误:
修改:
成功解决