el表达式不起作用
tomcat5.5的版本。
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
对于tomcat5,2.4版本默认启用el表达式,如果使用2.5版本及以上,默认el表达式是关闭的(注意,这里特地说明了是对于tomcat5,对于tomcat6及以上版本,web.xml只要是配置2.4及以上版本的的,默认都是启用el表达式的)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
那么对应2.5的web.xml --> jsp页面里应该增加<%@ page isELIgnored="false"%>
一句话,凡是部署描述文件遵循Servlet2.4规范的WEB应用,EL表达式的计算默认是启用的,而未遵循的,则EL表达式的计算默认是禁用的。
所以解决方案还可以是:将web.xml中的DTD(文档类型定义)改为2.4的版本
或者
对于一个单个JSP页面,你可以使用定义page指令来设置jsp页面是否支持EL。默认是支持EL(如果要页面不支持EL,请设置为isELIgnored=true;
<%@ page isELIgnored="true|false"%>
对于整个JSP应用程序,要修改WEB.XML配置(tomcat5.0.16默认是支持EL的);
<jsp-property-group>
<description> For config the ICW sample application </description>
<display-name>JSPConfiguration</display-name>
<url-pattern>/jsp/datareset.jsp</url-pattern>
<el-ignored>false< / el-ignored>
<page-encoding>ISO-8859-1</page-encoding>
<scripting-invalid>true</scripting-invalid>
<include-prelude>/jsp/prelude.jspf</include-prelude>
<include-coda>/jsp/coda.jspf</include-coda>
</jsp-property-group>
后记:实际上对于jboss4(tomcat5),即使在web.xml中配置了以上信息也是不管用的,不知道什么原因,可能是因为tomcat5只支持servlet2.4,不支持2.5以上,没有仔细追踪下去,所以只能修改WEB.XML至2.4或者每个jsp页面都添加<%@ page isELIgnored="false"%>,再或者就是升级tomcat至6及以上,以下记录别人总结的el表达式不管用的原因:
In other words, the EL expression doesn't get evaluated at all and is showing as plain text? That can have one or more of the following causes:
- Application server in question doesn't support JSP 2.0.
- The
web.xml
is not declared as Servlet 2.4 or higher. - The
<%@page %>
of JSP is configured withisELIgnored=true
. - The
web.xml
is configured with<el-ignored>true</el-ignored>
in<jsp-config>
.
web.xml
as Servlet 2.4 so that it will work in both Tomcat 5.5 and 6.0.下一篇: Servlet的详解