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

posted @ 2017-06-07 21:21  EasonJim  阅读(1491)  评论(0编辑  收藏  举报