el表达式(spel表达式)
el表达式${APP_PATH} 指的是哪个路径啊
1、el表达式语言,Java统一表达式语言,是一种特殊用途的编程语言,主要在Java Web应用程序用于将表达式嵌入到web页面。Java规范制定者和Java Web领域技术专家小组制定了统一的表达式语言。
2、由定义可知,el表达式主要是用来取值的。APP_PATH 这个参数明显是个自定义的变量,具体的路径值,你要看后台代码是如何赋值的。
3、这种写法其实很常见,如果没猜错的话,应该就是项目的虚拟路径名。
4、希望对你有帮助。
JSP中el表达式的取值过程是怎样的?
el表达式取值必需是servlet四大作用(servletContextsessionrequestpageContext)中有的值
EL表达式可以取JavaBean的值,也可以取Attribute的值,下面是取Attribute的值
2.${name }取值是从作用域最小的域进行取值,这里就是pageContext开始取值,即以上四个语句都有的时候,取到的name值是pageContext里面的Attribute中name值pageContextName
在JavaScript里面使用需要在最外层加引号:“${name}”
3.c标签又常与EL表达式使用:
JSP中用EL表达式取 传回来的Attribute中list值(假设list值是 读取数据库数据返回的resultset类转成list类值)
EL(表达式语言)
EL(Expression Language)是一门表达式语言,它对应%=…%。我们知道在JSP中,表达式会被输出,所以EL表达式也会被输出。
1.EL的格式
2.EL运算符
3.EL不显示null
当EL表达式的值为null时,会在页面上显示空白,即什么都不显示。
例如:
EL来访问JavaBean属性
Person.java
EL一共11个内置对象,无需创建即可以使用。
pageScope,requestScope,sessionScope,applicationScope,param,paramValues,header,headerValues,initParam,cookie,pageContext
除了pageContext其余的都是Map类型
EL使用语法
${Map.key}
或
${map['key']}
EL函数库是由第三方对EL的扩展,现在学习的EL函数库是由JSTL添加的
EL函数库就是定义一些有 返回值 的 静态方法 。然后通过EL语言来调用它们
EL函数库中包含了很多对字符串的操作方法,以及对集合对象的操作。
例如:
${fn:length(“abc”)}
会输出3,即字符串的长度
1.导函数库
%@ taglib prefix="fn" uri=""%
2.函数库
例如
1.写一个类,写一个有返回值的静态方法;
2.创建demo.tld文件,可以参考fn.tld文件来写,把itcast.tld文件放到/WEB-INF目录下;
3.在页面中添加taglib指令,导入自定义标签库。
DemoFuncations.java
demo.tld(放到classes下)
index.jsp
js中使用el表达式
js控制中用到了el表达式,最开始源码如下:
var?selected?=?${requestScope.xxxxForm.recordNumPerPage}
这样始终js错误,因为在第一次的时候requestScope.xxxxForm.recordNumPerPage为null。
于是在boss的指导下,简单的加了两个引号,代码变成
var?selected?=?“${requestScope.xxxxForm.recordNumPerPage}”
功能自动实现。
附上整个函数代码:
function?getSelected(name){??
??var?selects?=?document.getElementsByName(name);??
??var?selected?=??“${requestScope.xxxxForm.recordNumPerPage}";??
??if(selected?==?undefined?||?selected?==?null?||?selected?==""){??
????return?false;??
??}??
??for(var?j?=?0;?j??selects.length;?j++?){??
?????for(var?i?=?0;?i?=?selects[j].length;?i++){??
???????if(selects[j].options[i].value?==?selected){??
?????????selects[j].options[i].selectd?=?true;??
???????}???
?????}??
??}???????
}
总之,在js中使用el表达式一定要使用双引号。