在说相关内容前,一定要先熟悉jsp运行原理:
http://blog.csdn.net/lmsnju/article/details/4813488
http://hi.baidu.com/mingfang0219/blog/item/a13db6de9b36ee1e6327989f.html
http://blog.sina.com.cn/s/blog_5ce1157b0100wjbv.html
el表达式(运用el表达式直接获取值时,例如,${msg},不需要为msg提供set get方法;但是当获取对象的属性值时,例如,user.name,则必须为name属性提供set get方法)是jsp相关的概念,是在服务端执行的,服务端执行完成后再传给客户端浏览器,js是在客户端浏览器执行的,el在js前就已经被执行了。EL、JSTL以及其他各种标签是在服务端执行好后再通过网络传送给客户端,浏览器客户端收到后才会执行其中的js脚本。也就是说,el表达式生效的时候js代码还全都是文本,等js生效的时候早就没了el表达式了,你可以在浏览器中查看源代码,你就会发现el标签${}全没了,都转化为具体的值了。jsp和js不是一个平面上的东西,它们不可能在同一个时刻同时执行,它们没有任何交叉点。所以标题中“使用”两个字采用双引号,并不是js真正地使用el表达式,而是使用el表达式最终转化的值。
类似的,对于js中“使用”java代码,与使用el表达式是一个道理:JSP是先进行编译把java代码都编译出来形成一张完整的页面再发到客户端,js只是在客户端执行,等到js执行的时候其实js已经看不到java代码了。
如何在js代码(代码段或者js文件中的代码)中,获取el表达式的值或者java代码的值?可以通过下面的方式获取:
jsp文件中的js获取jsp页面中el表达式的值: var aaa = "${message}"
jsp文件中的js获取jsp页面中java代码的变量值:var aaa = "<%=JAVA变量名 %>"
所以,先在jsp文件中:定义js变量获取el表达式的值或者java代码的值:
<script type="text/javascript">
var aaa = "${user.name}"; //获取el表达式的值,此时aaa="jack"
var nnn = "<%=Constants.getValue()%>"; //获取java代码的值,此时nnn="3"
</script>
然后在其他js代码段中或者js文件中,就可以直接访问aaa跟nnn了。
你可能已经注意到了:上面的el表达式跟java代码都加了引号,这样做,不管值是什么类型,都会转为字符串。如果el表达式跟java代码不加引号,会怎么样呢?看下面:
<script type="text/javascript">
var aaa = ${user.name}; //在js执行的时候代码为var aaa = jack; 此时会把jack看做一个变量处理,如果此时碰巧js全局有jack变量,那就会把jack变量的值赋给aaa,否则报undefined错
var nnn = <%=Constants.getValue()%>; //在js执行的时候代码为var nnn = 3;此时typeof(nnn)为number类型
</script>
所以如果值是字符串类型的,最好加上引号;如果是数字类型的,可以加(会转为字符串),也可以不加(number类型)。参考:
http://hi.baidu.com/sun321000s/blog/item/8551cc8eb6c3c18fa5c27255.html
总结:
在js文件中不能直接使用el表达式以及java代码(浏览器是识别不了jsp中el等标签的:返回给客户端的结果是JSP文件执行的结果,不包含任何JSP语法)。但是el表达式、java代码、js脚本、jstl标签等都可以在jsp文件中使用,所以要想在js代码中使用el表达式的值或者是java代码的值,可以通过jsp文件这样一个桥梁,达到目的!
js写在jsp文件里,jsp能用的标签(el表达式、jstl标签、java代码等),js就能“用”;js单独写成一个文件,啥标签都不能“用”,都没效。不过一般不建议js使用乱七八糟的jsp标签。
附:
JSTL核心标签库的使用:
http://www.cnblogs.com/lihuiyy/archive/2012/02/24/2366806.html
EL表达式:
http://www.cnblogs.com/Fskjb/archive/2009/07/05/1517192.html
分享到:
相关推荐
此外,我们还需要注意,在 JavaScript 中使用 EL 表达式时,需要将 EL 表达式用引号引起来。例如: ```javascript alert("${msgs.addFullName }"); ``` 否则,EL 表达式将不会生效。 在使用 EL 表达式时,还需要...
然而,在这个场景下,我们讨论的是如何在客户端的JavaScript代码中使用EL表达式来处理由Spring MVC从前端传递到后台的JSON数据。 **一、EL表达式的基本概念** EL表达式是一种简洁的语法,它允许我们在JSP页面上...
在开发过程中,为了使用EL表达式和JSTL,我们需要在项目的类路径中添加相应的JAR文件。这里提到的两个文件: 1. `standard.jar`:这是JSTL的标准实现,包含了JSTL的核心库和其他部分,如XML处理和SQL操作。这个库...
在JSP页面中,可以使用`<script>`标签来嵌入JS代码,并在其中引用EL表达式的结果。例如: ```html ; charset=UTF-8" pageEncoding="UTF-8"%> <script type="text/javascript"> var addFullName = "${msgs....
EL 中可以使用变量来存取数据。变量的语法结构为 `${variableName}`,其中 `variableName` 是变量的名称。EL 会依次从 Page、Request、Session、Application 四个范围中查找变量,如果找到则返回变量的值,否则返回 ...
这些方法将作为EL表达式中的函数调用。 4. 在JSP页面中使用:在JSP页面中,你可以像使用内置EL函数一样,通过`my:myFunction`这种形式调用你的自定义函数,其中`my`是函数库的前缀,`myFunction`是函数名。 举例来...
例如,确保变量引用正确,如`${user.name}`,并且在动作标签中正确使用`value`属性来引用EL表达式,如`${user.name}" />`。 6. **检查Scope** EL表达式查找变量时,会按照page、request、session和application的...
### Java中JSP和EL表达式的隐含对象详解 在Java Web开发中,JSP(Java Server Pages)作为一种常用的技术被广泛应用于构建动态网页。它允许开发者将HTML、JavaScript等静态网页元素与动态生成的内容混合在一起。在...
EL表达式可以用于JSP页面的任何地方,包括在JSP标签、HTML属性、JavaScript变量等中。 EL表达式的主要特点包括: 1. 简洁性:EL语法简单明了,可以快速访问和操作JavaBean的属性。 2. 动态类型:EL自动处理数据类型...
下面我们将详细探讨在JavaScript中使用EL表达式的三种常见方式: 1. **括号内使用EL表达式**: 在JSP中,通常使用`${expression}`这样的形式来嵌入EL表达式。这种方式主要用于将服务器端的数据动态地插入到HTML...
通过上述方法,我们可以在JavaScript中正确使用EL表达式中定义的变量值,从而解决在js文件中写EL表达式取不到值的问题。在实际开发过程中,这种跨客户端和服务端的变量值传递需求是非常常见的,因此需要开发者熟悉并...
**在JSP2.0中使用EL表达式语言** EL(Expression Language)是JSP2.0引入的一种强大的数据访问语言,它简化了JSP页面中的数据操作,使得开发者无需编写scriptlet()就能方便地访问和处理应用程序中的数据。EL的...
这将告诉Tomcat不要忽略EL表达式,并启用它在该页面上的使用。 2. 方法二:修改`web.xml`配置文件中的`<web-app>`标签,确保其版本为2.4或更高,且不包含禁用EL的配置。例如: ```xml xmlns=...
EL表达式中包含了多种预定义的变量,它们分别对应于JSP页面的不同作用域。这些变量包括: - `pageScope`:代表当前页面的作用域。 - `requestScope`:代表HTTP请求的作用域。 - `sessionScope`:代表用户会话的作用...
JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet...JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。标签库目前支持四种标签: