1.访问对象属性的方式
(1)用点号运算符"."访问,如${user.name}
(2)用方括号运算符"[]"访问,如${user["name"]}
注:有特殊字符的情况,一般用方法2
2.访问数组元素
用方括号运算符"[]"访问,如${users[0]}
3.运算符
除了支持常用的的算术,关系,逻辑运算符外,还有条件运算符 a?b:c,如${a>b ? a : b} 特别的增加了一个检
查对象是否为空的运算符 empty,如${empty var} 如果var
(1)不存在,即没被定义
(2)值为null
(3)var为集合的对象时,并且集合为空
则返回 true
4.隐含对象
applicationScope
应用程序范围内的scoped变量组成的集合
cookie
所有cookie组成的集合
header
HTTP请求头部,字符串
headerValues
HTTP请求头部,字符串集合
initParam
全部应用程序参数名组成的集合
pageContext
当前页面的javax.servlet.jsp.PageContext对象
pageScope
页面范围内所有对象的集合
param
所有请求参数字符串组成的集合
paramValues
所有作为字符串集合的请求参数
requestScope
所有请求范围的对象的集合
sessionScope
所有会话范围的对象的集合
其中,applicationScope,pageScope,requestScope,sessionScope这四个隐含对象,虽然类似JSP中的,但是在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其它相关信息。
如<%request.setAttribute("username")%>,在EL中可以这样使用${sessionScope.username}。
接上面,那么所谓“其它相关信息”怎么取得呢?这就用到了pageContext对象
如<%session.getCreationTime()%>对应${pageContext.session.creationTime}
如<%request.getRequestURL()%>对应${pageContext.request.requestURL}
与输入有关的隐含对象,param,paramValues,取用户请求参数的时候可以用到,这个貌似只有在纯jsp编程中才用的到吧。
如<%request.getParameter("username")%>在EL中就是${param.username},而paramValues则是控件数组。
5.命名变量
EL表达式中的变量成为命名变量,关于这个命名变量还是用下面这段代码说会比较清楚
如${username}等于这段代码
<%
String username = (String)pageContext.findAttribute("username");
if(username != null){
%>
<%=username%>
<%
}
%>
来看一下 Object findAttribute(String name)这个函数的API
Searches for the named attribute in page, request, session (if valid), and application scope(s) in order and returns the value associated or null.
是说按照page,request,session(如果有效),application的顺序,来返回这个关联的对象。
6.EL函数
EL函数实际与java中的方法相对应。编写自定义EL函数的步骤如下:
(1)编写一个public的java类,类中要作为EL函数的方法必须是 public static 类型的。
如public class MyTag
{
public static String append(String str1, String str2)
{
String bigStr = str1 + str2;
return bigStr;
}
}
(2)编写一个标记库描述文件
在WEB-INF目录下新建一个.tld文件,文件名自取,本例为myTag.tld,文件内容如下: <?xml version="1.0" encoding="UTF-8" ?>
<taglib 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 web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>MyTag</description>
<tlib-version>1.0</tlib-version>
<short-name>mytag</short-name>
<uri>/mytaglib</uri>
<function>
<description>MyTag</description>
<name>append</name>
<function-class>com.xxx.util.MyTag</function-class>
<function-signature>java.lang.String append(java.lang.String, java.lang.String)</function-signature>
</function>
</taglib>
(3)在jsp中导入标签库在JSP页面导入标签库(不用再Web.xml中说明tld的位置,servlet容器可自动搜索tld文件,因此可打包成jar文件)
<%@taglib uri="/mytaglib" prefix="mytag" %>
(4)使用EL调用函数
${mytag:append("WEL","COME")}
7.可能出现的问题
(1)EL包冲突问题,解决方法转自javaeye中chxkyy的博客
javax.faces.FacesException: java.lang.LinkageError: loader constraints violated when linking javax/el/ExpressionFactory class
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:425)
org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
错误的原因是tomcat/lib下的el-api.jar与项目WEB-INF/lib目录下的el-api.jar冲突。
把项目目录下的el-api.jar删除即可。
tomcat/lib下有包若干,下次在遇到此异常可以先检查下是否存在冲突。
分享到:
相关推荐
### EL表达式学习资料 #### 一、EL简介 EL(Expression Language)是Java Server Pages (JSP) 技术中的一种简化的脚本语言,主要用于简化页面开发中对对象和属性的访问过程。EL 表达式允许开发者在 JSP 页面中直接...
el表达式学习,这可是一个学好el表达式的绝好文档哦,赶快下载下来吧
一个html格式简单教程 不错的 推荐一看
### EL表达式详解 EL(Expression Language)表达式在Java Web开发中扮演着重要的角色,尤其是在JSP(Java Server Pages)技术中。...在未来的学习和实践中,希望你能够灵活运用EL表达式,提高自己的开发技能。
本篇笔记将深入解析EL表达式的语法、用法以及其隐含对象。 首先,让我们了解EL表达式的语法结构。基本形式是 `${expression}`,其中`expression`是一个表达式,用于访问或计算值。EL表达式可以在HTML和JSP标签中...
在这个文档中,我们将深入探讨EL表达式,并通过与OGNL、JSTL和STRUTS2标签的对比,进一步理解其用法。 首先,让我们关注EL表达式的语法。EL表达式通常以`#{}`包围,它允许开发者以一种声明式的方式访问和操作Java...
在实验中,我们学习了 EL 表达式和 JSTL 标签库的原理和使用,了解了如何使用 EL 表达式和 JSTL 标签库来简化 JSP 页面的开发。我们还学习了如何使用 EL 表达式和 JSTL 标签库来实现具体的功能,例如输出数据、条件...
2. **EL与JSTL的结合**:学习如何在JSP页面中使用EL表达式来设置JSTL标签的属性,以及如何在JSTL标签中嵌入EL表达式。 3. **EL的上下文**:理解EL表达式的上下文,包括变量作用域(page, request, session, ...
通过学习本教程,你将能够熟练掌握EL表达式的规范,并能够灵活运用到实际开发中。 #### 二、EL表达式的基本语法 ##### 1. 语法结构 EL表达式的语法结构非常简单,通常采用 `${expression}` 的形式。其中 `...
EL(Expression Language,表达式语言)是Java EE中一种强大的模板语言,主要用于在JSP页面中简化数据访问和处理。它允许开发者通过简洁的语法来...学习并熟练掌握EL表达式,对于提升JSP开发的效率和代码质量至关重要。
学习EL表达式,可以让开发者更容易理解和使用JSP页面。 首先,了解EL表达式的基本用法非常重要。EL表达式都是以“${”开始,并以“}”结束。例如,${“Hello World”}用于输出字符串常量“Hello World”,而${str}...
EL(Expression Language,表达式语言)是Java...通过学习和实践这些EL表达式的知识,你可以更高效地开发JSF应用,提升代码的可读性和维护性。这份教程将引导你深入理解EL的每一个细节,确保你在实际工作中得心应手。
java,el,el表达式,el表达式源码,apache开源项目源码commons-el-1.0-src 各种el表达式操作工具类源码,你会从中得到意想不到的效果! apache开源组织开发的开源项目源码,其优良的代码风格和高质量的源码是学习者...
在这个主题“JavaWeb-11 JSP&EL表达式”中,我们将深入探讨两个关键组件:JSP(JavaServer Pages)和EL(Expression Language),它们在JavaWeb开发中的作用以及如何协同工作。 JSP是Java的一种视图技术,允许...
### Java中JSP和EL表达式的隐含对象详解 在Java Web开发中,JSP(Java Server Pages)作为一种常用的技术被广泛应用于构建动态网页。它允许开发者将HTML、JavaScript等静态网页元素与动态生成的内容混合在一起。在...
EL(Expression Language),全称Java...提供的"el表达式资料全集"包含了四个文件,应该是关于EL和JSTL的教程、示例或者练习,这些资源对于学习和巩固这两个主题将非常有帮助。建议仔细研读,通过实例练习来加强理解。
一个能帮助一些初学者来学习el表达式的用法的 大家来看看吧
**JSP的JSTL标签和EL表达式详解** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码来生成动态内容。然而,传统的JSP脚本语法可能导致代码混乱且不易维护。为了解决这个问题...
### EL表达式与JSTL标签库详解 #### 一、EL表达式 **1.1 什么是EL表达式** EL(Expression Language)表达式是一种简洁的语法结构,用于访问和处理Java对象,特别是在JSP页面中。它使得开发者能够更方便地在JSP...