JSP页面不支持EL表达式的解决方法
JSP页面不支持EL表达式的问题就出在新建项目时web.xml的声明上。
web.xml声明部分一般分为如下版本的xsd:
- web-app_2_2.xsd
- web-app_2_3.xsd
- web-app_2_4.xsd
- web-app_2_5.xsd
web-app_2_2.xsd:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/dtd/web-app_2_2.dtd">
web-app_2_3.xsd:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
web-app_2_4.xsd:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
web-app_2_5.xsd:
<?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">
在确定web.xml里的xsd版本之后一定要在JSP页面的头部声明(<%@page %>)部分加一行,如下:
<%@ page isELIgnored="false" %>
设为false才能解析EL表达式。
经过各版本的test之后,注意!!其中Servlets 2.4(JSP 2.0出来之后的第一个版本),这个版本的isELIgnored默认设置为false。所以使用web.xml里用web-app_2_4.xsd声明的时候在JSP页面不用特意声明。
下面是官方Documention中isELIgnored Attribute的详解:
文章转自:http://www.iteye.com/topic/155354
经过测试,以上修改web.xml头为2.4的方式在Eclipse中用tomcat插件运行并不生效,而打包成war包部署到tomcat中是可行的,而在每个页面上增加page属性开启el表达式支持对于两种部署都可行。
下面这种方式是直接web.xml中增加对每个页面开启el表达式,配置如下(同样,在Eclipse的tomcat插件中是不可行的,部署到Tomcat中是可行的):
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>false</el-ignored> </jsp-property-group> </jsp-config>
详细配置:
<jsp-config> <jsp-property-group> <description>指定JSP文件的配置属性</description> <display-name>jspConfiguration</display-name> <url-pattern>*.jsp</url-pattern> <el-ignored>false</el-ignored> <page-encoding>utf-8</page-encoding> <scripting-invalid>false</scripting-invalid> <include-prelude></include-prelude> <include-coda></include-coda> </jsp-property-group> <jsp-property-group> <description>指定htm文件的配置属性</description> <display-name>jspConfiguration</display-name> <url-pattern>*.htm</url-pattern> <el-ignored>false</el-ignored> <page-encoding>utf-8</page-encoding> <scripting-invalid>false</scripting-invalid> <include-prelude></include-prelude> <include-coda></include-coda> </jsp-property-group> <jsp-property-group> <description>指定html文件的配置属性</description> <display-name>jspConfiguration</display-name> <url-pattern>*.html</url-pattern> <el-ignored>false</el-ignored> <page-encoding>utf-8</page-encoding> <scripting-invalid>false</scripting-invalid> <include-prelude></include-prelude> <include-coda></include-coda> </jsp-property-group> </jsp-config>
属性说明:
<description>:设定的说明
<display-name>:设定名称
<url-pattern>:设定值所影响的范围,如:/CH2或/*.jsp
<el-ignored>:若为true,表示不支持EL语法
<scripting-invalid>:若为true,表示不支持<% scripting %>语法
<page-encoding>:设定JSP网页的编码
<include-prelude>:设置JSP网页的抬头,扩展名为.jspf
<include-coda>:设置JSP网页的结尾,扩展名为.jspf