您的位置:首页 > Web前端 > JavaScript

jsp页面中EL表达式被当成字符串处理不显示值的问题

2010-06-07 20:26 295 查看
在自己练手时遇到了EL表达式被当成字符串处理而没有正确解析的现象。当时工程中使用的Javaee5,

web.xml

------------------------------------------------------------------------------

<web-app version="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >

EL表达式死活不解析,被当成字符串处理了。

后来把web.xml改成

------------------------------------------------------------------------------

<web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
重新部署,启动tomcat,结果EL表达式被正确解析了出来。

后来进一步查资料得知:

这是Jsp2.0的一个新特性:

二)引入表达式语言(EL)

  JSP
2.0的一个主要特点是它支持表达语言(expression
language)。JSTL表达式语言可以使用标记格式方便地访问JSP的隐含对象和JavaBeans组件,JSTL的核心标记提供了流程和循环控制
功能。自制标记也有自定义函数的功能,因此基本上所有seriptlet能实现的功能都可以由JSP替代。在JSP
2.0中,建议尽量使用EL而使JSP的格式更一致。

  在web.xml的<jsp-property-group>中可以控制一组
JSP是否使用EL,在每个JSP中也可以指定是否该JSP使用EL。在page
directive中的isELIgnored属性用来指定是否忽略。格式为:

  <%@ page
isELIgnored="true|false"%>

  如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式
<p>${2000 % 20}</p>在isELIgnored="true"时输出为${2000 %
20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。

  虽然
JSP
2.0可以使JSP中完全使用表达语言而避免scriptlet,在实际编程中,应该根据程序的功能要求和编程人员的自身条件选择合适的方式。使用表达语
言的JSP比较方便规整,但是由于需要将标记进行转换,在第一次被调用时会比较慢;有些编程人员由于对Java比较了解,因而更习惯JSP
1.2之前的编程方式,因此,在使用中应因地制宜地选择适用的编程方法。

也就是说在javaee4中默认设置是<%@ page
isELIgnored="false"%>,而javaee5中默认设置可能是<%@ page
isELIgnored="true"%>,所以在javaee5我们可以通过在jsp页面设置<%@ page
isELIgnored="false"%>来指定正常解析EL表达式

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: