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

2019-04-18  本文已影响0人  acsamson

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识别成字符
上一篇下一篇

猜你喜欢

热点阅读