`
leo133845920
  • 浏览: 56117 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JSP页面EL表达式无效的问题

    博客分类:
  • java
阅读更多
以前用WSAD wizard做的,都可以在JSP页面中解析到EL表达式,当然前提是JSP2.0的情况下。
今天遇到了一个莫名其妙的问题。刚下载Eclipse3.3+MyEclipse6.0体验的过程中,遇上了解析不到EL表达式的问题。经过好几个小时的琢磨终于发现了,给大家share一下:
问题就出在建Web Project的时候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.xml声明部分吧,如下:
web-app_2_2.xsd

Java代码 < type="application/x-shockwave-flash" width="14" height="15" src="http://gimgen1026.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3C!DOCTYPE%20web-app%20PUBLIC%20%22-%2F%2FSun%20Microsystems%2C%20Inc.%2F%2FDTD%20Web%20Application%202.2%2F%2FEN%22%20%22http%3A%2F%2Fjava.sun.com%2Fdtd%2Fweb-app_2_2.dtd%22%3E">
<?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
Java代码 < type="application/x-shockwave-flash" width="14" height="15" src="http://gimgen1026.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3C!DOCTYPE%20web-app%20PUBLIC%20%22-%2F%2FSun%20Microsystems%2C%20Inc.%2F%2FDTD%20Web%20Application%202.3%2F%2FEN%22%20%22http%3A%2F%2Fjava.sun.com%2Fdtd%2Fweb-app_2_3.dtd%22%3E">
<?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
Java代码 < type="application/x-shockwave-flash" width="14" height="15" src="http://gimgen1026.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Cweb-app%20xmlns%3D%22http%3A%2F%2Fjava.sun.com%2Fxml%2Fns%2Fj2ee%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20version%3D%222.4%22%20xsi%3AschemaLocation%3D%22http%3A%2F%2Fjava.sun.com%2Fxml%2Fns%2Fj2ee%20%20%20http%3A%2F%2Fjava.sun.com%2Fxml%2Fns%2Fj2ee%2Fweb-app_2_4.xsd%22%3E">
<?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
Java代码 < type="application/x-shockwave-flash" width="14" height="15" src="http://gimgen1026.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Cweb-app%20xmlns%3D%22http%3A%2F%2Fjava.sun.com%2Fxml%2Fns%2Fjavaee%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20version%3D%222.5%22%20xsi%3AschemaLocation%3D%22http%3A%2F%2Fjava.sun.com%2Fxml%2Fns%2Fjavaee%20%20%20http%3A%2F%2Fjava.sun.com%2Fxml%2Fns%2Fjavaee%2Fweb-app_2_5.xsd%22%3E">
<?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的详解:
The isELIgnored Attribute
• Format
– <%@ page isELIgnored="false" %>
– <%@ page isELIgnored="true" %>
Purpose
– To control whether the JSP 2.0 Expression Language
(EL) is ignored (true) or evaluated normally (false).
• Notes
– If your web.xml specifies servlets 2.3 (corresponding to
JSP 1.2) or earlier, the default is true
• But it is still legal to change the default—you are permitted
to use this attribute in a JSP-2.0-compliant server
regardless of the web.xml version.
– If your web.xml specifies servlets 2.4 (corresponding to
JSP 2.0) or earlier, the default is false

-------------------------------------------------以上为google出来的结果------------------------------------

     只有Servlet2.4版本默认支持EL,如果在MyEclipse新建web项目时,选择Java EE5.0的时候是用Servlet2.5的。它默认是不支持EL.要在页面声明<%@ page isELIgnored="false" %> 方有效,有谁知道在哪个配置文件中一次性声明,就不用每个页面都要声明的话,哪位能告诉我呢?谢谢!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics