在javascript中使用el表达式

来源:互联网 发布:淘宝新宝贝如何引流 编辑:程序博客网 时间:2024/06/07 14:01


在javascript中使用el表达式,该怎么使用呢?网上有些人还在讨论说javascript是客户端的,el表达式是服务端的,客户端不能使用服务端的东西!纯属扯淡,如果按照这样理解的话,那浏览器是客户端,那浏览器就不能从服务器上获取到数据,把数据展现在浏览器了!接下来讲一讲怎么在javascript中使用el表达式!下面我自己写了个例子,如下截图,有图有真相才有说服力!哈哈........


浏览器界面效果如下:


浏览器解释执行,解释执行之后的源代码如下图:


点击网页上的文本框,看下效果!



看下图:把这2行注释掉后,点击文本框之后客户端浏览器就不会报错了,文本框的值就变成16了。



javascript中想要正常的使用el表达式,就要为el表达式加上引号(单引号或者双引号都可以,反正总之就是要加引号)





最后,奉上这个案例的源代码

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><%session.setAttribute("userName", "张三");session.setAttribute("age", 16);%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>演示在javascript中使用EL表达式</title><link rel="stylesheet" type="text/css" href="body.css"><link rel="stylesheet" type="text/css" href="mark.css"><script type="text/javascript">//测试在javascript中使用EL表达式function testEL() {var message = "${sessionScope.userName}";alert(message);var inputNode = document.getElementById("testEl");inputNode.value = '${sessionScope.age}';}</script></head><body><div align="center"><h1 style="color: red;">演示在javascript中使用EL表达式</h1><input id="testEl" type="text" value="" onclick="testEL()"></div></body></html>

我们可以这样做个测试,在一个jsp页面上写,alert("${sessionScope.userName}");或者可以这样alert('${sessionScope.userName}'); 不管是单引号还是双引号,都可以,反正就是要加引号。为什么要加引号呢?大家想一想? 比如我们在jsp页面上,我们写一段javascript代码,比如弹出一句话。如下例子:

<script type="text/javascript">  var message = "您好张三";  alert(message);  </script>  

或者你直接alert("您好张三");这样写也是可以的。

<script type="text/javascript">  alert("您好张三");  </script>

OK,现在我们要用el表达式了,也是用alert弹出一句话,这句话是用EL表达式从服务端获取到的!代码如下:

<script type="text/javascript">//像var message = ${sessionScope.userName};这种不加引号的写法会报错,因为浏览器解释执行后最终生成的网页源代码就是var message = 张三; //大家想下,这符合javascript语法规范吗?在javascript中字符串是要加引号的,不然会报错,有了引号语法才对.//字符串有了引号,浏览器在解释执行javascript语句的时候才不会报错,要不然语法是通不过的// var message = ${sessionScope.userName};//所以要为EL表达式加上引号,单引号、双引号都可以//单引号okvar message = '${sessionScope.userName}';//双引号也是ok的var message2 = "${sessionScope.userName}";alert(message);alert(message2);  </script>

大家想下会有什么问题?

如果${sessionScope.userName}从服务器端获取到的值是张三,那么最终浏览器解释执行得到的就是如下这样的结果 var message = 张三; 这样肯定是不行的,javascript中字符串肯定是要用引号引起来的,像var message = "张三";或者是像var message = '张三';这样才对,所以这下知道为什么在javascript中使用el表达式一定要用引号引起来了吧,不管是单引号还是双引号,总之就是要用引号引起来。

像alert(${sessionScope.userName});这种写法浏览器最终解释执行得到的结果就是alert(张三);所以这样写肯定会有问题,只有alert("${sessionScope.userName}");这样写或者alert('${sessionScope.userName}');这样写才可以,浏览器最终解释执行得到的结果就是alert("张三");和alert('张三');

还有就是如果${sessionScope.age}从服务器取出的是一个数字呢?比如${sessionScope.age}从服务器取出的值是16,那么要不要加引号呢? 

alert(${sessionScope.age});浏览器最终解释执行得到的结果就是alert(16);你们自己想想,javascript的语法中,数字要不要加引号呢?在javascript的语法中数字是不需要加引号的,所以alert(${sessionScope.age});浏览器最终解释执行得到的结果就是alert(16);这里不加引号也是可以的,所以可以正常弹出16,但是用el表达式从服务器上取到的数据多种多样,有字符串,有数字,有小数,有整数,有字符等等等各种类型的数据,所以不管el表达式从服务器上取到的字符串还是数字,大家在javascript中使用EL表达式的时候,为了保险起见和省事和为了不给自己找麻烦和添乱,大家最好是给EL表达式加上引号,百利而无一害。

在javascript中定义一个数字类型的变量像var age =16;这样写是没有任何问题的,然后alert(age);可以正常弹出16,没问题,如果我们像var age = "16" 或者像var age = '16'这样写呢?也没问题,只不过这里加了引号的16就是一个字符串了。

所以不管EL表达式从服务器上取到的值是字符串的还是数字,最好都加上引号,这样做比较保险,也比较省事,不管是单引号还是双引号,总之加上引号肯定没问题。

如果EL表达式从服务器上取到的值是数字,在javascript中给这个数字加上引号也没关系,如果客户端要用这个加了引号的数字做数学运算,我们可以利用javascript中的函数把这个加了引号的数字转换成数字类型再做运算!比如var age = "${sessionScope.age}" ,浏览器解释执行后得到的结果是var age = "16";大不了我们在客户端利用javascript的转换函数,把age = "16"从字符串类型转换为数字类型再做数学运算即可!


阅读全文
0 0
原创粉丝点击