外部JavaScript中使用el表达式

来源:百度知道 编辑:UC知道 时间:2024/05/15 17:54:56
我在做一个网页,通过struts跳转,想在一个JavaScript中得到struts中reques。setattrib的值,想请教高手一下怎么使用

iname[0]="<%=${imageList[0].imgurl}%>";
iname[1]="<%=${imageList[1].imgurl}%>";
iname[2]="<%=${imageList[2].imgurl}%>";
iname[3]="<%=${imageList[3].imgurl}%>";
iname[4]="<%=${imageList[4].imgurl}%>";

这是我在JavaScript中用的el表达式,但是不能够把el表达式解释,不知哪里错了

很明显你的表达式写错了!你用java的表达式包住了el表达式,这是两种表达式,不能在一起使用的。<%= ... %>是java表达式。${ ... }才是el表达式。
应该改成:
iname[0]="${imageList[0].imgurl}";
iname[1]="${imageList[1].imgurl}";
iname[2]="${imageList[2].imgurl}";
iname[3]="${imageList[3].imgurl}";
iname[4]="${imageList[4].imgurl}";

通过el表达式获取request.setAttribute("keyName", ...)的值可以使用如下两种方式:
${requestScope.keyName}
或${keyName}
第一种方式是直接指定了keyName的作用域为request,即读取request中存放的值。
第二种方式会读取page, request, session, application域中的keyName的值。
如果明确要读取的值来自哪个作用域,推荐使用第一种方式!

第一,你的EL表达式写错了。${imageList[0].imgurl}这个就已经是EL表达式了,等同于java脚本式的写法<%=内容省略%>。
第二,即使EL没有写错,但是因为你说是外部引入js文件,那么在那个外部js文件中是不能用EL表达式的,EL表达式无效。

原因我个人觉得是这样:
所有的jsp文件在运行时都会被翻译成java文件,用java输出流去“写”出一份HTML文本代码作为response响应返回给客户端浏览器,浏览器接收到的其实还只是html页面。把EL表达式翻译、计算、赋值等等过程就是在服务器端将jsp翻译成java文件运行并“写”html代码的时候完成的。因为外部js文件的内容并不会直接出现在这个jsp上,所以对于服务器端来说,它不会去翻译