el表达式的基本语法
- 格式:doc
- 大小:27.50 KB
- 文档页数:2
EL语⾔表达式(⼀)【语法和特点】
⼀、基本语法规则:
EL表达式语⾔以“${”开头,以"}"结尾的程序段,具体格式如下:
${expression}
其中expression:表⽰要指定输出的内容和字符串以及EL运算符组成的表达式。
⼆、EL语⾔表达式的特点:
(1)EL语法简单,⽅便
(2)EL可以与JSTL结合使⽤,也可以和JavaScript语句结合使⽤。
(3)EL可以⾃动转换类型。
(4)EL既可以访问⼀般的变量,也可以访问JavaBean中的属性和嵌套属性、集合对象。
(5)EL中可以执⾏算术运算、逻辑运算、关系运算和条件运算等。
(6)EL中可以获得命名空间(PageContext对象,他是页⾯中所有其他内置对象的最⼤范围的集成对象,通过它可以访问其他内置对象)。
(7)EL中在进⾏除法运算时,如果除数是0,则返回⽆穷⼤Infinity,⽽不返回错误。
(8)EL中可以访问JSP的作⽤域(request、session、application以及page)
(9)扩展函数可以与Java类的静态⽅法进⾏映射。
三、EL中保留的关键字
and eq gt
instanceof div or
le false empty
not lt ge。
flowable el表达式调用方法理论说明1. 引言1.1 概述在当今快速发展的信息化时代,工作流引擎成为了提升企业效率和管理流程的关键技术之一。
Flowable作为一款功能强大的开源工作流引擎,被广泛应用于各类企业和组织中。
随着业务需求的不断增长,Flowable EL表达式作为Flowable的核心功能之一,扮演了重要角色。
EL(Expression Language)表达式是一种动态语言特性,在Flowable中可以通过使用EL表达式来编写灵活和可配置的业务逻辑。
然而,由于其复杂性和独特性,这些表达式调用方法尚未得到全面深入的理论研究。
本文旨在对Flowable EL表达式调用方法进行详细讲解与理论说明,以帮助读者更好地掌握和运用该技术。
1.2 文章结构本文主要包含五个部分:引言、Flowable EL 表达式调用方法、理论说明和原理解析、Flowable EL 表达式调用方法详解以及结论。
在引言部分,我们将简要介绍本文目标、内容架构以及文章撰写目的。
1.3 目的本文的主要目的是深入剖析Flowable EL表达式的调用方法,全面讲解其理论背景和原理机制。
通过本文的阐述,读者将能够完全了解EL表达式在Flowable 中的应用场景,并掌握如何编写和使用EL表达式来实现流程的灵活配置和动态控制。
此外,本文还将从实际案例分析和示例代码说明方面,帮助读者更好地理解EL 表达式的具体使用方法。
最后,我们将对Flowable EL表达式调用方法进行优缺点分析,并提出未来的发展方向与建议。
希望通过本文的撰写与分享,能够为读者提供有关Flowable EL表达式调用方法相关理论知识和应用实践经验,并为相关领域的研究与开发工作提供有益参考。
2. Flowable EL 表达式调用方法2.1 Flowable 工作流引擎简介Flowable是一个轻量级的开源工作流引擎,用于处理业务流程和任务的自动化。
它采用Java语言编写,并提供了一套强大而灵活的工具和API,使开发人员能够轻松创建、部署和管理各种类型的工作流。
el语句基本⽤法EL(Expression Language)⼀、EL操作符语法:${EL表达式}11. “.”操作符⽤来访问对象的某个属性,如${}。
2. “[ ]”操作符也可⽤来访问对象的某个属性,如${user[‘name’]}。
“[ ]”操作符其他功能:(1)当属性名中包含特殊字符如“.”或“-”等的情况下,就不能使⽤“.”操作符来访问,这时只能使⽤“[ ]”操作符。
(2)根据索引值访问数组中的元素使⽤“[ ]”操作符,如${arr[1]}。
(3)使⽤变量实现动态访问,如${user[x]},x是⼀个变量,改变x即可。
1.1、算术操作符这⾥只测试了“+”操作符,“-”、“*”、“/”或div、“%”或mod请⾃⾏测试。
<!-- “+”操作符 -->${a1+a2+a3 }<br><!-- 输出:60 -->${1+1 }<br><!-- 输出:2 -->${'1'+1.1 }<br><!-- 输出:2.1 -->${"1"+1 }<br><!-- 输出:2 -->${bbbbbsdcksnvjnds+1 }<br><!-- 输出:1 -->\${"bbbbbsdcksnvjnds"+1 }<!-- 报异常 -->1.2、关系操作符1.3、逻辑操作符1.4、empty操作符<!-- empty操作符 -->${empty s }<br><!-- 输出:true -->${!empty s }<br><!-- 输出:false -->${not empty s }<br><!-- 输出:false -->${!not empty s }<br><!-- 输出:true -->总结:若变量 s为null,或长度为零的String,或size为零的集合,则${ empty s }返回的结果为true,${ not empty s }或${ ! empty s }返回的结果为false。
基本语法一、EL简介1.语法结构${expression}2.[]与.运算符EL提供.和[]两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用[]。
例如:${user.My-Name}应当改为${user["My-Name"]}如果要动态取值时,就可以用[]来做,而.无法做到动态取值。
例如:${er[data]}中data是一个变量3.变量EL存取变量数据的方法很简单,例如:${username}。
它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Reque st、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称Page PageScopeRequest RequestScopeSession SessionScopeApplication ApplicationScope二、EL隐含对象1.与范围有关的隐含对象与范围有关的EL隐含对象包含以下四个:pageScope、requestScope、sessi onScope和applicationScope;它们基本上就和JSP的pageContext、request、session和application一样;在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(Strin g name),却不能取得其他相关信息。
例如:我们要取得session中储存一个属性username的值,可以利用下列方法:session.getAttribute("username")取得username的值,在EL中则使用下列方法${ername}2.与输入有关的隐含对象与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
EL表达式总结EL表达式总是用大括号括起,而且前面有一个美元符($)前缀:${expression}。
表示式中第一个命名变量要么式一个隐式对象,要么是某个作用域(页面作用域、请求作用域、会话作用域或应用作用域)中的一个属性。
点号操作符允许你使用一个Map键或一个bean性质名来访问值,例如,使用${foo.bar}可以得到bar的值,在此,bar是Map foo的Map键名,或者是bean foo的一个性质。
放在点号操作符右边的东西必须遵循Java的标识符命名规则!(换句话说,必须以一个字母、下划线或美元符开头,第一个字符后面可以有数字,但不能有其他字符)。
点号右边只能放合法的Java标识符。
例如,${foo.1}键就不可以。
[]操作符比点号功能更强大,因为利用[]可以访问数组和List,可以把包含命名变量的表达式放在中括号里,而且可以做任意层次的嵌套,只要你受得了。
例如,如果musicList是一个ArrayList,可以用${musicList[0]}或${musicList[“0”]}来访问列表的第一个值。
EL并不关心列表索引加不加引号。
如果中括号里的内容没有用引号引起来,容器就会进行计算。
如果确实放在引号里,而且不是一个数组或List的索引,容器就会把它看作是性质或键的直接命名。
除了一个EL隐式对象(PageContext)外,其他EL隐式对象都是Map。
从这些隐式对象可以得到任意4个作用域中的属性、请求参数值、首部值、 cookie值和上下文初始化参数。
非映射的隐式对象是pageContext,它是PageContext对象的一个引用。
不要把隐式EL作用域对象(属性的Map)与属性所绑定的对象混为一谈。
换句话说,不要把requestScope隐式对象与具体的JSP隐式对象 request混淆。
访问请求对象只有一条路,这就是通过pageContext隐式对象来访问(不过,想从请求得到的一些东西通过其他EL隐式对象也可以得到,包括param/paramValues、header/headerValues和cookie)。
表达式语言(Expression Language)是一种用于在软件应用中进行数学计算和逻辑判断的特殊语言。
它通常用于在动态网页、模板、配置文件和其他与业务逻辑相关的场景中进行数据处理和计算。
EL的语法格式包括以下几个方面:1. 表达式结构:EL表达式通常由一系列的变量、运算符和函数组合而成,用于对数据进行操作和计算。
它的结构通常由一组操作数和运算符组成,比如 x + y 或者 func(x, y) 等形式。
2. 变量引用:在EL中,可以通过使用 ${} 符号来引用变量,变量的引用形式为 ${var},其中 var 为变量名。
这种形式的引用可以方便地将变量的值嵌入到文本中,或者作为计算表达式的一部分参与运算。
3. 字面量:除了引用变量,EL中还可以直接使用字面量,包括整数、浮点数、字符串等。
比如 123、3.14、"hello" 等都可以作为字面量直接出现在表达式中。
4. 运算符:EL支持多种常见的数学和逻辑运算符,包括加减乘除、取模、逻辑与或非等。
这些运算符可以用于对变量和字面量进行计算和逻辑判断,从而完成复杂的数据处理和逻辑控制。
5. 函数调用:除了基本的运算符,EL还支持函数的调用,这些函数可以是预定义的一些常用函数,也可以是用户自定义的函数。
通过函数调用,可以实现更复杂的数据处理和逻辑控制。
EL的语法格式简洁清晰,易于理解和使用。
它在软件开发中发挥着重要的作用,不仅可以用于动态网页的数据展示和计算,还可以用于配置文件的数据处理和逻辑判断。
了解和掌握EL的语法格式对于提高软件开发效率和质量都具有重要意义。
EL语言的语法格式设计简洁清晰,易于理解和使用,但在实际应用中,我们还需要更深入地了解其具体的语法规则和用法。
下面我们将对EL表达式的语法格式进行更详细的介绍,包括变量引用、字面量、运算符、函数调用等方面的内容。
1. 变量引用在EL语法中,变量引用是一种非常常见的操作。
1、语法结构 ${expression}例如:${er.sex}从 Session 的范围中,取得用户的性别。
假若依照之前 JSP Scriptlet 的写法如下:User user = (User)session.getAttribute("user"); String sex = user.getSex( );2、[ ]与.运算符 EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数 字的符号,就一定要使用“[ ]“。
例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。
例如: ${er[data]}中 data 是一个变量假若 data 的值为"sex"时,那上述的例子等于${er.sex}; 假若 data 的值为"name"时,它就等于${}。
例:${er.sex}等于${er["sex"]} . 和 [ ] 也可以同时混合使用,如下: ${sessionScope.shoppingCart[0].price}回传结果为 shoppingCart 中第一项物品的价 格。
3、变量 EL 存取变量数据的方法很简单,例如:${username}。
它的意思是 取出某一范围中名称为 username 的变量。
因为我们并没有指定哪一个范围的 username,所以它会依序从 Page、 Request、Session、Application 范围查找。
假如途中找到 username,就直接回传,不再继续找下去,但是假如 全部的范围都没有找到时,就回传 null。
属性范围在 EL 中的名称 Page PageScope Request RequestScope Session SessionScope Application ApplicationScope我们也可以指定要取出哪一个范围的变量: 范例 ${ername} 说明 取出 Page 范围的 username 变量${ername} ${ername} ${ername}取出 Request 范围的 username 变量 取出 Session 范围的 username 变量 取出 Application 范围的 username 变量其中,pageScope、requestScope、sessionScope 和 applicationScope 都是 EL 的隐含对 象,由它们的名称可以很容易猜出它们所代表的意思,例如:${ername} 是取出 Session 范围的 username 变量。
el表达式写法
EL(Expression
Language)是一种在JavaWeb应用中使用的表达式语言,用于在JSP 页面中简化表达式的编写。
以下是一些常见的EL表达式写法示例:
1.访问变量:
o${变量名}:直接输出变量的值。
o${对象.属性}:访问对象的属性值。
o${列表[index]}:访问列表中指定索引位置的元素值。
2.调用方法:
o${对象.方法名()}:调用对象的无参方法并输出结果。
o${对象.方法名(参数1, 参数
2, ...)}:调用对象的带参方法并输出结果。
3.算术运算:
o${数值1 + 数值2}:进行加法运算。
o${数值1 - 数值2}:进行减法运算。
o${数值1 * 数值2}:进行乘法运算。
o${数值1 / 数值2}:进行除法运算。
o${数值1 % 数值2}:取模运算。
4.逻辑运算:
o${条件1 && 条件2}:进行逻辑与运算。
o${条件1 || 条件2}:进行逻辑或运算。
o${!条件}:进行逻辑非运算。
这些是EL表达式的一些基本写法,根据具体的需求和上下文,可以使用更复杂的表达式进行计算和操作。
请注意,在使用EL表达式时,要确保正确引入EL的命名空间,并且在合适的上下文中使用E L表达式。
1.1 EL表达式:EL表达式规定为:eval-expression和literal-expression,同时E L表达式支持Compositeexpressions,很多EL表达式(eval-ex pressions和literal-expressions)被聚合在一起。
EL表达式被解析成数值表达式和方法表达式。
其中,取值表达式去引用一个值,而方法表达式则是关联一个方法。
一旦被解析之后,表达式能够被优化地计算一次或多次。
下面我们来分为:eval-expression、literal-expression、Compo siteexpressions来讲述1.1.1Eval-expressionEval-expression是以使用${expr}或者#{expr}结构的形式构成。
两种方式都是相同的方式,能很好被解析和计算,尽管它们在使用时有着不同的意义从技术方面来说。
从J2EE层规范协定来说,${expr}结构是直接计算而#{expr}结构则是延期计算,这种界定符号指出了在J2EE层两种表达式类型的语义上面的区别。
#{expr}这种界定符号被称为延迟计算是因为直到系统需要的时候才计算。
而${expr}这种界定符号则是在JSP页面编译的时候就计算,就是为什么叫做直接计算的原因。
1.1.1.1作为取值表达式的计算表达式当解析成一个取值表达式的时候,eval-expression能被计算成左值和右值。
若在EL中有等号操作符号出现,右值是类型出现在等号的右边的表达式,左值同理。
右值比如:<input type="text"value="${}"/><h:form>以下面这个例子为例:<h:inputTextid="email"value="#{checkOutFormBean.email}"size="25"maxlength="125"validator="#{checkOutFormBean.validateEmail}"/></h:form>当表单被提交的时候,在申请计算的阶段,Faces计算EL表达式#{checkOutFormBean.validateEmail}作为一个数据接口的引用,这个数据结构的数值是被一个表单相关联的输入参数设置。
·el表达式的基本语法
${el表达式}
1) 第一种:访问bean的属性
a、${}
jsp引擎会依次从pageContext、request、session、application查找绑定名为"user" 的对象,如果找到了就不再向下查找,否则,继续向下查找。
找到后。
调用该对象的getName()方法,并输出
其值;找不到,则输出""(空)。
b、${user["name"]},效果相同
"name"表示字符串
c、或者也可以使用${user[propname]},注意不带引号表示变量
d、此外[]里面还可以以0 1这样的数字下标,作用是输出数组里面的元素值。
2)第二种:获取请求参数值
a、${ername} 等价于request.getAttribute("username");
b、${paramValues.interest} 等价于request.getAttributeValues("interest");
3)第四种:计算一个表达式,将结果作为标签的属性值或者直接输出。
a、算术运算+ -* % / 但是要注意的是+号不能连接字符串
b、关系运算== != < > >= <=
可以使用对应的"eq" "nq" "lt" "gt" "le" "ge"
c、逻辑运算
&& || ! 可以使用and or not
d、empty运算
判断一个字符串是否为空,集合内容是否为空,以及绑定的对象是否存在
·5核心标签的使用
1)使用步骤
需要将jstl标准标签库相关的jar文件copy到WEB-INF 的lib目录下
jstl.jar java stantard taglib
stantard.jar
2)在件商品文件当中,使用taglib指令导入标签。
3)使用标签
a、<c:if test="" var="" scope="">
</c:if>
test属性:当值为true的时候,执行标签体的内容,为false则不执行、
var属性:指定一个绑定名
scope属性:指定一个绑定范围
var属性和scope属性用于将test的结果绑定到指定的对象
(pageContext,request,session,application)上。
b、<c:choose>
用于分支,当某个条件满足,执行某一个分支。
每个分支条件用when标签表示。
<c: when test=""> 可出现多次,当值为true的时候执行标签体内容
<c: otherwise> 只出现一次,当其他分支都不满足条件时,则执行该标签体内容
c、<c:forEach var="" items="" varStatus="">
用于遍历集合
items属性:指定要遍历的集合
var属性指定一个绑定名,jsp引擎会从集合当中取出一个对象,绑定到pageContext 对象上。
varStatus属性:指定一个绑定名,对应的绑定值是一个java对象,封装了遍历时的一些信息,
包括当前遍历的对象的下标(index)以及是第几次遍历(count)遍历。
<c:url>
如果禁止cookie,会在地址后面添加sessionId
当使用绝对路径时,会自动地在地址钱添加应用名request.getContextPath();
<a href="<c:url value='jsp02.jsp'/>">
<c:import url="">
url指定要调用的另一个jsp的地址
当一个jsp运行时,调用另一个jsp
<c:redirect url="">
url指定重定向的地址,当用户禁止cookie以后
会在地址后面添加sessionId
response.sendRedirect(response.encoderRedirectURL(String uri));
重定向
<c:remove var="" scope=""> request.Attribute(String name) 等价于<c:remove var="name" scope="request"/>
var 绑定名scope绑定对象
<c:set value="" var="" scope="">
value 属性值var 绑定名scope绑定对象
<c:catch var="">
var指定一个绑定名,该绑定名对应一个
<c:out>
早期的el表达式不能输出,需要使用该标签来输出el表达式的值
value:el表达式
default:缺省值
escapeXml:当值为true,会将<,>使用相应的实体替换。