2012-01-23 74 views
7

我试图让这个旧的JSP项目在Tomcat 7,JRE7中运行,但是在项目的大部分页面中出现这个错误。请问任何人都可以解释一下发生了什么?JSTL EL无效表达式:javax.el.E​​LException:在Tomcat中7

代码如下:

<c:set var="structClass"> 
    <c:if test="${empty param.class}">template</c:if> 
    <c:if test="${not empty param.class}">${param.class}</c:if> 
</c:set> 

错误的样子:

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: org.apache.jasper.JasperException: /WEB-INF/templates/template.jsp (line: 77, column: 4) "${empty param.class}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${empty param.class}] org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:585) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)

回答

11

正是因为'类' 的表达关键字尝试使用

<c:if test="${empty param['class']}">template</c:if> 
<c:if test="${not empty param['class']}">${param['class']}</c:if> 

参考http://geekomatic.ch/2011/03/22/1300804080000.html

+0

现在错误更改为=> org.apache.jasper.JasperException:javax.servlet.ServletException:javax.servlet.jsp.JspException:java.lang.NoSuchFieldError:deferredExpression –

+0

http://geekomatic.ch/2011/ 03/22/1300804080000.html我添加了-Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK = true并解决了问题....感谢您的链接! –

+1

$ {something.new}也会由于'new'关键字而导致同样的错误。谢谢。 –

相关问题