论坛首页 Java企业应用论坛

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

浏览 33247 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-13  
以前用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
<?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的详解:
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
   发表时间:2008-01-13  
直接在web.xml里面设置ELIgnore不好吗?

我记得是有这个配制项的,这样就不必每个jsp页面都设置一次了。
0 请登录后投票
   发表时间:2008-01-13  
你说的这个web.xml里确实有jsp-config的属性..见识,谢谢!
于是刚才自己试了一下,光web.xml里写
<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
    <el-ignored>true</el-ignored>
    <!-- <el-ignored>false</el-ignored> -->
    </jsp-property-group>
</jsp-config>

仍然没反应..
在网上也找了找,结果有些人说是Tomcat里web.xml和jsp页面上都得声明,大概是这意思。
skydream有更详细有效的配置方法吗?
0 请登录后投票
   发表时间:2008-01-14  
web.xml里面有没有
<taglib><taglib-uri>/WEB-INF/jstl/c.tld</taglib-uri>   
<taglib-location>/WEB-INF/jstl/c.tld</taglib-location></taglib>

这样的定义?
0 请登录后投票
   发表时间:2008-01-14  
没有jstl定义啊,跟这个还有关系吗?
我试试
0 请登录后投票
   发表时间:2008-01-15  
试了,还不行.. --;;;
0 请登录后投票
   发表时间:2008-01-20  
<jsp-config>   
    <jsp-property-group>   
        <url-pattern>*.jsp</url-pattern>   
    <el-ignored>true</el-ignored>   
    <!-- <el-ignored>false</el-ignored> -->   
    </jsp-property-group>   
</jsp-config> 
0 请登录后投票
   发表时间:2008-01-21  
el只在2.4环境下支持吧,所以web.xml必须配为2.4以上的。
貌似是根据web.xml来判断版本的。
0 请登录后投票
   发表时间:2008-06-12  
EL要在jstl2.0以上才能支持
0 请登录后投票
   发表时间:2008-08-28  
el需要 servlet 2.4 吧
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics