外部JavaScript中使用el表达式 200
我在做一个网页,通过struts跳转,想在一个JavaScript中得到struts中reques。setattrib的值,想请教高手一下怎么使用iname[0]="<%...
我在做一个网页,通过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表达式解释,不知哪里错了 展开
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表达式解释,不知哪里错了 展开
8个回答
展开全部
第一,你的EL表达式写错了。${imageList[0].imgurl}这个就已经是EL表达式了,等同于java脚本式的写法<%=内容省略%>。
第二,即使EL没有写错,但是因为你说是外部引入js文件,那么在那个外部js文件中是不能用EL表达式的,EL表达式无效。
原因我个人觉得是这样:
所有的jsp文件在运行时都会被翻译成java文件,用java输出流去“写”出一份HTML文本代码作为response响应返回给客户端浏览器,浏览器接收到的其实还只是html页面。把EL表达式翻译、计算、赋值等等过程就是在服务器端将jsp翻译成java文件运行并“写”html代码的时候完成的。因为外部js文件的内容并不会直接出现在这个jsp上,所以对于服务器端来说,它不会去翻译外部js内的东西,对于<script src="xxxxx.js">这样的外部引用代码,它只会简单的直接写到response里面去。当response响应送到客户端浏览器的时候,浏览器解释执行html代码,才会去引入这个外部js文件,但是这个过程是在客户端完成的,当然就不存在什么“客户端的EL表达式”,自然不能解释出来,浏览器只会认为<%省略%>那是一个普通的字符串,因为它被引号括起来了。
如果说的不对,还请高人指正
第二,即使EL没有写错,但是因为你说是外部引入js文件,那么在那个外部js文件中是不能用EL表达式的,EL表达式无效。
原因我个人觉得是这样:
所有的jsp文件在运行时都会被翻译成java文件,用java输出流去“写”出一份HTML文本代码作为response响应返回给客户端浏览器,浏览器接收到的其实还只是html页面。把EL表达式翻译、计算、赋值等等过程就是在服务器端将jsp翻译成java文件运行并“写”html代码的时候完成的。因为外部js文件的内容并不会直接出现在这个jsp上,所以对于服务器端来说,它不会去翻译外部js内的东西,对于<script src="xxxxx.js">这样的外部引用代码,它只会简单的直接写到response里面去。当response响应送到客户端浏览器的时候,浏览器解释执行html代码,才会去引入这个外部js文件,但是这个过程是在客户端完成的,当然就不存在什么“客户端的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的值。
如果明确要读取的值来自哪个作用域,推荐使用第一种方式!
应该改成:
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的值。
如果明确要读取的值来自哪个作用域,推荐使用第一种方式!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
iname[0]="${imageList[0].imgurl }";
注意,EL表达式不是JAVA代码
request.setAttribute();???
这个值JS得不到的,什么功能会需要得到呢?
你想把一个值通过JS值过去吗?那你可以在写URL的时候,把那个值带在后面的参数后面,一定要用这个吗。
注意,EL表达式不是JAVA代码
request.setAttribute();???
这个值JS得不到的,什么功能会需要得到呢?
你想把一个值通过JS值过去吗?那你可以在写URL的时候,把那个值带在后面的参数后面,一定要用这个吗。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以这样,把el输出的值放进一个隐隐域中(文本框设成hidden),然后js调用,就用dom来访问它。直接el写到js里去是不行的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
iname[0]='<c:out value="${imageList[0].imgurl}"/>';
iname[1]='<c:out value="${imageList[1].imgurl}"/>';
iname[2]='<c:out value="${imageList[2].imgurl}"/>';
iname[3]='<c:out value="${imageList[3].imgurl}"/>';
iname[4]='<c:out value="${imageList[4].imgurl}"/>';
这样写就可以了。
EL表达式不能用<%%>包含起来的,否则就是成了纯java代码了。
iname[1]='<c:out value="${imageList[1].imgurl}"/>';
iname[2]='<c:out value="${imageList[2].imgurl}"/>';
iname[3]='<c:out value="${imageList[3].imgurl}"/>';
iname[4]='<c:out value="${imageList[4].imgurl}"/>';
这样写就可以了。
EL表达式不能用<%%>包含起来的,否则就是成了纯java代码了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询