美文网首页
【零碎】在js中使用jquery的${}EL表达式

【零碎】在js中使用jquery的${}EL表达式

作者: acsamson | 来源:发表于2019-04-18 17:20 被阅读0次

    EL表达式就是在js中获取后台的数据的一种表达式方式,例如:

    ${pictureUrl} // 等同于从后台中调动getPictureUrl()
    ${pictureUrl[index]} // 如果是数组的话
    ${pictureUrl.'key'} // 如果是map的话
    

    那么在外部js中是无法识别el表达式的, 他只会转成string类型, 那么怎么在js中获取el表达式的值呢


    解决方法: 在jsp页面内写

    加入传入的pictureUrl是一个数组, 就可以取其中的元素, 如果是map下的('picture', array)这样就不可以直接取其中的元素, 要分步骤来, 写成一条语句会报错, ${map.pictureUrl[下标]}它就不知道这是什么东西

    正确写法要写成:

    <c:forEach items="${Map.chineseName}" var="chineseName">
        <c:forEach items="${chineseName}" var="name">
            <div>${name}</div>
        </c:forEach>
    </c:forEach>
    

    注意 如果值是对象, 不要乱用字符串拼接

    var pictureUrl = '${pictureUrl['+i+']}'; // 这样写会报错
    

    正确写法

    var pictureUrl ='${pictureUrl[''+i+'']}'; // 将获取到的后台值转成了字符串
    // 原理是
    var pictureUrl = '${pictureUrl[0]}'; // 我们一般这样写
    var pictureUrl = '${pictureUrl['0']}'; // 这样也可以获取到 
    

    可能会有一个问题, 我在外部js中写然后传到jsp内联js, 然后jsp读取到字符串再把其中的对应el表达式找出来去匹配?

    实际上是不可以的, 它没有那么只能还会从字符串中去找匹配, 逻辑上可能就不通, 因为如果可以的话那肯定会影响性能, 设计上也不可以, 意味着如果el表达式本身要被识别成字符就会很麻烦

    也就是说说

    var pictureUrl ='${pictureUrl['+'+i+'+']}'; // 外部js还是会被jsp识别成字符
    

    相关文章

      网友评论

          本文标题:【零碎】在js中使用jquery的${}EL表达式

          本文链接:https://www.haomeiwen.com/subject/gcwtgqtx.html