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表达式
。
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表达式被当成字符串处理不显示值问题的解决方法
- JAVA JSP 页面s标签和EL表达式处理值问题
- EL表达式取不到值的问题(把EL表达式当字符串显示处理)
- strust2将jsp页面属性值封装传值给action详解以及问题处理
- JSP页面使用EL表达式出现的问题:javax.el.PropertyNotFoundException: Property 'ID' not found on type java.lang.Str
- JSP页面EL表达式使用的问题
- jsp页面中EL表达式原样输出问题
- 如何解决JSP页面显示乱码问题
- JSP页面EL表达式无效的问题
- 【ZT】如何解决JSP页面、JDBC显示乱码问题
- 用el表达式和jspl在jsp页面显示用户列表
- 37-002-1 通过spring的OpenSessionInViewFilter解决jsp页面懒加载显示的问题
- 补充 jsp 页面的日期显示的格式问题
- Struts 数据显示到jsp页面的细节问题
- myEclipse设置 解决jsp页面显示乱码问题
- 在JSP页面中使用标签判断字符串长度的问题
- jsp中为什么后台传递过来的数据没有空格 而jsp页面上用EL表达式接收就会显示有空格
- emoji 表情不能存入mysql 数据库和在jsp 页面显示的处理
- jsp页面中的EL表达式不被解析的问题