jsp开发中不支持EL问题

来源:互联网 发布:java堆内存溢出 编辑:程序博客网 时间:2024/06/08 17:22

今天遇到了一个莫名其妙的问题,就是在使用MyEclipse5.5或6.0时遇上了解析不到EL表达式的问题。经过好几个小时的琢磨终于发现了,给大家share一下


问题就出在建Web Project的时候web.xml声明上。 
web.xml声明部分一般分为如下版本的xsd, 
web-app_2_2.dtd 
web-app_2_3.dtd 
web-app_2_4.xsd 
web-app_2_5.xsd 

更详细的列出各版本web.xml声明部分吧,如下: 
web-app_2_2.dtd 

<?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"> 

注意!! 其中servlets 2.4(我没记错的话JSP 2.0出来之后的第一个版本),这个版本的isELIgnored默认设置为false。所以使用web.xml里用web-app_2_4.xsd声明的时候在JSP页面不用特意声明。 servlets 2.4EL可以直接使用。 

而其它的不行必须手工申明. 
确定web.xml里的xsd版本之后(如果不是servlets 2.4)一定要在JSP的声明(<%@page %>)部分加一行,如下: 
<%@ page isELIgnored="false" %> 
或者 
设置整个项目使用el表达式,需要在web.xml中加上 (控制一个项目) 
<jsp-config> 
<jsp-property-group> 
<el-ignored>false</el-ignored> 
</jsp-property-group> 
</jsp-config> 

这样设为false才能解析EL表达式。 

还用一个最简单的解决方法是,直接在web.xml中将servlets 2.4xsd的引用替换你现在的。即用以下引用替换. 
<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">