• 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表达式,分两种情况

    1. JS代码在JSP页面中, 这可以直接使用EL表达式. 如:
    1. 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表达式一定要使用双引号

    原因

    引自链接:https://www.cnblogs.com/jpfss/p/9155880.html

    el表达式(运用el表达式直接获取值时,例如,msgmsgsetgetuser.namenamesetgetjspjseljsELJSTLjseljsjselel{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代码了。

  • 相关阅读:
    调用组件的C++代码
    如何用C语言读写文件
    linux 常用命令总结(tsg)
    com.mysql.jdbc.MysqlDataTruncation: Data trunca...
    SpringMVC配置
    中文转换成Unicode编码 和 Unicode编码转换为中文
    在visual studio中运行C++心得
    博客园博客转至个人网站博客声明
    Seafile安装踩坑
    不要因为走得太远,而忘了自己的初心
  • 原文地址:https://www.cnblogs.com/tfxz/p/12662424.html
Copyright © 2020-2023  润新知