JS中使用EL表达式
感谢原文作者:limeiky
原文链接:https://www.cnblogs.com/limeiky/p/5321423.html
EL(Expression Language)表达式
EL(Expression Language)表达式的主要作用是访问存放在某个范围中的值, 将值的内容(或者值的属性值)打印到JSP页面,所以说运用EL的最终目的就是:将范围中的值打印到JSP页面
EL目的:为了使JSP写起来更加简单,使JSP页面尽可能少的存在JAVA代码!
EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指能够在 JSP 页面中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式添加为一种脚本编制元素,脚本编制元素:就是编写脚本的元素,就是编写JAVA代码的元素,在这里EL替代了JAVA代码的作用
JavaBean与EL表达式:
脚本编制元素EL:使用EL表达式可以简洁地读出JavaBean的属性值
js中使用EL表达式,分两种情况
- JS代码在JSP页面中, 这可以直接使用EL表达式. 如:
- JS代码是单独的.js 文件, 通过引入到 JSP中来,这时候可通过提前定义JS变量的形式的解决,如:
<c:set var="contextPath" value="${pageContext.request.contextPath}" scope="application"/>
<script>
<%--JS gloable varilible--%>
var contextPath = "${contextPath}";
</script>
在JSP页面上定义JS变量 contextPath.
这样在之后引入的JS文件中就可以使用contextPath变量了.
//Image setting
config.filebrowserImageUploadUrl = contextPath + "/ckeditor/upload.htm";
另一个例子,用js控制,用到了el表达式,最开始源码如下:
Java代码
var selected = ${requestScope.xxxxForm.recordNumPerPage}
,这样始终js错误,因为在第一次的时候requestScope.xxxxForm.recordNumPerPage为null。于是在boss的指导下,简单的加了两个引号,代码变成
Java代码
var selected = “${requestScope.xxxxForm.recordNumPerPage}”
,ok,功能自动实现。
关键总结:在js中使用el表达式一定要使用双引号
原因
el表达式(运用el表达式直接获取值时,例如,{}全没了,都转化为具体的值了。jsp和js不是一个平面上的东西,它们不可能在同一个时刻同时执行,它们没有任何交叉点。所以标题中“使用”两个字采用双引号,并不是js真正地使用el表达式,而是使用el表达式最终转化的值。
类似的,对于js中“使用”java代码,与使用el表达式是一个道理:JSP是先进行编译把java代码都编译出来形成一张完整的页面再发到客户端,js只是在客户端执行,等到js执行的时候其实js已经看不到java代码了。