在自己练手时遇到了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表达式 。
以上这篇jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:- JSP页面无法识别EL表达式问题解决方案
- 使用IDEA编写jsp时EL表达式不起作用的问题及解决方法
- JSP中EL表达式用法_动力节点Java学院整理
- 浅谈java里的EL表达式在JSP中不能解析的问题
- JAVA JSP页面技术之EL表达式整理归纳总结
- 浅谈jsp EL表达式取值过程、page和pagecontext的区别
- JSP中EL表达式的用法详解(必看篇)
- jsp中EL表达式获取数据
- 实例解析JSP中EL表达式的各种运用
- JSP 不能解析EL表达式的解决办法
- JSP EL表达式详细介绍
- jsp 不支持EL表达式,解决办法
- jsp EL表达式详解