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识别成字符
网友评论