今天在开发过程中发现一个细节问题,由于前端采用EasyTemplate模板方法实现数据展示,但老是不能正常显示出来。后来发现竟是EL将我的EasyTemplate的${...}解释执行了,导致我的模板不能正常展示后台数据。
网上搜索将EasyTemplate所在的页增加<%@ page isELIgnored="true"%>解决。
JSP 2.0的一个主要特点是它支持表达语言(expression language)。JSTL表达式语言可以使用标记格式方便地访问JSP的隐含对象和JavaBeans组件,JSTL的核心标记提供了流程和循环控制功能。自制标记也有自定义函数的功能,因此基本上所有scriptlet能实现的功能都可以由JSP替代。在JSP 2.0中,建议尽量使用EL而使JSP的格式更一致。
一.在web.xml的<jsp-property-group>中可以控制一组JSP是否使用EL
<jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素。
其中<taglib>元素在JSP 1.2时就已经存在;而<jsp-property-group>是JSP 2.0 新增的元素,其目的是给一定范围类的JSP文件设置一些特性。
<jsp-property-group>元素主要有八个子元素,它们分别为:
1.<description>:设定的说明;
2.<display-name>:设定名称;
3.<url-pattern>:设定值所影响的范围,如:/CH2 或 /*.jsp,具体来说,是定义需要设置特性的JSP的URL,比如<url-pattern>/jsp/xxx.jsp</url-pattern> 表示访问路径为/jsp/xxx.jsp需要设置一些特性;
4.<el-ignored>:若为true,表示不支持EL 语法,具体来说,符合url-pattern访问路径的JSP需要忽略表达式语言,也就是说JSP中有类似"${1+2}"这样的表达式会被直接输出到页面,不会被数学运算之后再输出;
5.<scripting-invalid>:若为true,表示不支持<% scripting %>语法,具体来说,符合url-pattern访问路径的页面是否支持<%%>这样的语法:如果设置为true且JSP页面中包含<% scripting %>语法,将会报错;
6.<page-encoding>:设定JSP 网页的编码,即设置符合url-pattern访问路径的页面的编码设置;
7.<include-prelude>:设置JSP 网页的抬头,扩展名为.jspf,即表示符合url-pattern访问路径的JSP页面头部默认包含的文件;
8.<include-coda>:设置JSP 网页的结尾,扩展名为.jspf,即表示符合url-pattern访问路径的JSP页面尾部默认包含的文件
一个简单的<jsp-config>元素完整配置:
<jsp-config> <taglib> <taglib-uri>Taglib</taglib-uri> <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location> </taglib> <jsp-property-group> <description>Special property group for JSP Configuration JSP example.</description> <display-name>JSPConfiguration</display-name> <url-pattern>/jsp/* </url-pattern> <el-ignored>true</el-ignored> <page-encoding>GB2312</page-encoding> <scripting-invalid>true</scripting-invalid> <include-prelude>/include/prelude.jspf</include-prelude> <include-coda>/include/coda.jspf</include-coda> </jsp-property-group> </jsp-config>
二.在每个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"。
相关推荐
要解决这个问题,首先需要理解EL表达式的解析与web.xml配置文件中指定的JSP版本有关。在Java EE 5中,默认情况下,EL表达式可能不会被解析,而是作为普通文本处理。为了解决这个问题,可以尝试将web.xml文件中的JSP...
在Java Web开发中,EL(Expression Language)表达式语言是一种强大的工具,用于简化JSP页面中的数据访问和处理。EL的引入极大地提升了JSP...在实际项目中,确保这些依赖项正确配置,是成功使用EL表达式的关键步骤。
本资源主要讲解了如何在JSTL中定义和使用自定义的EL表达式,这对于提高JSP页面的可读性和可维护性至关重要。 首先,理解JSTL的基础概念。JSTL由几个核心标签库组成,如fmt、fn、sql、xml等,它们提供了处理日期和...
4. **EL的异常处理**:了解当EL表达式计算出错时,如何配置错误处理策略。 5. **性能优化**:学习如何通过合理使用EL和JSTL,提高JSP页面的执行效率。 掌握EL表达式和JSTL的使用,对于一个Java Web开发者来说至关...
1. **EL表达式的开启与关闭**:可以通过`<%@page isELIgnored="true"%>`来控制是否启用EL表达式,默认情况下,JSP 2.0及以上版本默认启用了EL表达式。 2. **EL表达式的结构**:EL表达式可以包含各种运算符和函数,...
2. **配置问题**:在某些版本的Tomcat服务器中,可能需要进行特定配置才能使EL表达式生效。例如,在JSP文件中加入`<%@ page isELIgnored="false" %>`指令。 3. **命名规则**:在使用EL表达式时,应避免使用EL表达式...
在配置完成后,你就可以在JSP页面中自由地使用EL表达式了,如 `${user.name}` 来获取名为 `user` 的JavaBean对象的 `name` 属性,或者 `${list.size()}` 来获取列表的长度。EL表达式还支持方法调用,如 `${bean....
例如,确保变量引用正确,如`${user.name}`,并且在动作标签中正确使用`value`属性来引用EL表达式,如`${user.name}" />`。 6. **检查Scope** EL表达式查找变量时,会按照page、request、session和application的...
以下将详细探讨EL表达式的使用、禁用的原因以及如何禁用。 1. EL表达式的基本概念: EL表达式是一种声明式语言,用于在JSP页面中访问JavaBean属性或JSP作用域中的对象。它的语法简单,通常以`${}`包围,如`${...
EL 表达式可以访问对象的属性和集合,可以使用点号(.)或中括号([])来访问对象的属性。例如: * ${user.name}:访问对象 user 的 name 属性 * ${user["name"]}:同上 * ${list[1]}:访问 list 对象的第二项 * ${...
在进行Java Web项目的开发时,特别是在使用Maven的情况下,了解不同Web规范下的EL表达式解析规则至关重要。通过本文的分析与解决方案,我们可以更好地理解如何解决EL表达式未被解析的问题,避免类似错误的发生。同时...
例如,我们可以使用`<c:set>`标签设置一个变量,然后在EL表达式中使用该变量。 在不使用Java代码的JSP页面中,EL表达式的优点在于它将业务逻辑与视图层分离,使开发者能够专注于页面布局,而不用关心具体的Java语法...
在Tomcat服务器中,EL表达式默认是启用的,但在某些情况下可能需要手动配置。有以下两种方法来确保Tomcat支持并正确配置EL表达式: 1. 方法一:在每个JSP页面的顶部添加`<%@ page isELIgnored="false" %>`指令。这...
如果遇到EL表达式不起作用的情况,应检查是否有人在上述三个位置设置了禁用EL的配置。同时,确保正确地在适当的作用域中设置和检索变量,以防止因作用域问题导致的错误。 总之,EL表达式在Web开发中提供了强大的...
#### 二、EL表达式的配置 EL表达式要在JSP页面中生效,首先需要确保JSP版本为2.0及以上,并且在`<%@ page %>`指令中设置`isELIgnored`属性为`false`。例如: ```jsp ``` 这行代码告诉容器不要忽略EL表达式,使得...
**EL表达式简介** EL全称为Expression Language,最初在JSTL 1.0中作为方便数据存取的自定义语言出现,仅限于在JSTL标签内使用,如`${3 + 7}">`。然而,随着JSP 2.0的发布,EL已成为标准规范的一部分,适用于支持...
### Java中JSP和EL表达式的隐含对象详解 在Java Web开发中,JSP(Java Server Pages)作为一种常用的技术被广泛应用于构建动态网页。它允许开发者将HTML、JavaScript等静态网页元素与动态生成的内容混合在一起。在...
因此,在性能敏感的应用场景中,可以根据实际情况灵活选择是否使用EL表达式。 - 对于习惯使用传统JSP脚本(如`<% %>`语法)的开发者而言,可以继续采用这种方式,以保持代码的一致性和提高开发效率。 #### 总结 ...
- 隐式对象的使用需要在JSP页面的web.xml文件中对EL表达式的支持进行配置。 - EL表达式默认不启用对静态资源的访问,需要通过配置JSP页面解析器来启用。 总结而言,JSP EL表达式为JSP页面提供了一种轻量级的数据...
最后,我们需要在JSP页面中引入我们的自定义函数库,并在EL表达式中使用它。在`elTest.jsp`页面中,我们添加以下代码: ```jsp ... ${m:getFruit("10") } ``` 这里,`prefix="m"`是我们为自定义函数库选择的前缀,...