执行过程是服务器先解析了服务器端脚本后,结果返回到客户端,由浏览器执行返回的结果,这个两个步骤,不能混合搭配使用的。
我觉得有两种做法:
一种是你说的,用字符串,然后客户端拆分再 *** 作。
另一种是用el循环,输出的东西是客户端脚本的数组 *** 作
var aaa=new Array();
<c:forEach items="${reportName}" var="mm">
aaapush("${mm}");
</foreach>
然后 *** 作aaa
两种方法大同小异两种情况
1 JS代码在JSP页面中, 这可以直接使用EL表达式 如:
[html] view plain copy print
<script type="text/javascript">
$(function () {
new BacklogOverview("${paramalert}");
});
</script>
2JS代码是单独的js 文件, 通过引入到 JSP中来这时候可通过提前定义JS变量的形式的解决,如:
[html] view plain copy print
<c:set var="contextPath" value="${pageContextrequestcontextPath}" scope="application"/>
<script>
<%--JS gloable varilible--%>
var contextPath = "${contextPath}";
</script>
在JSP页面上定义JS变量 contextPath
这样在之后引入的JS文件中就可以使用contextPath变量了
[html] view plain copy print
//Image setting
configfilebrowserImageUploadUrl = contextPath + "/ckeditor/uploadhtm";js是客户端执行,el是在服务端执行,而服务端比客户端先执行,所以你不能用js来改变已经执行的el表达式的值,但是却可以用el来给js初始化传值,这和jsp脚本是一样的效果,但是如果js脚本不是在jsp页面里而是在单独的js文件里,这时用el初始传值是不起作用的,但你可以通过windowonload()来得到el的值再传送给js文件里的方法进行变量初始化
使用函数fn:
${fn:substringAfter(pagemapCONTENT,"标题")} //取 标题 后边的内容更多用法可见:>1、在原JSP页面中将这些值封装进hidden域,然后传给js文件
比较直接的一种做法,但在后期维护时候可能会引起歧义(例如过一段时间后看JSP页面时候不知道这些hidden是干嘛的了)
2、我认为比较好的一种方式,在JSP页面中先声明一个<script></script>,在其中将你要传递的EL表达式作为全局变量写入,然后再导入外部JS代码
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)