日期:2014-05-16  浏览次数:20465 次

JSTL的EL表达式失效:${ctx}

?

项目中使用了JSTL1.1,然后在web.xml中使用了:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

?

因为jstl1.1的EL表达式在servlet2.5默认是禁用的,需要在JSP页面中加入:<%@ page isELIgnored="false"%>

?

?

或者改为2.4,因为jstl1.1在servlet2.4中默认是启用的。

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd" version="2.4">

?

?

测试结果:

?

在Tomcat5(apache-tomcat-5.5.34)中:

? ? ? ? 使用2.4, EL正常

? ? ? ? 使用2.5, EL失效

? ? ? ? 使用2.5, 并在每个页面上添加:<%@ page isELIgnored="false"%>, EL正常


在Tomcat6(apache-tomcat-6.0.33)中:

? ? ? ? 使用2.4及2.5(未加<%@ page isELIgnored="false"%>),EL均正常