2 回答

TA贡献1872条经验 获得超3个赞
上面一种是在服务端执行时,将项目路径存到的PageScope中。
<c:set var="ctx" value="${pageContext.request.contextPath}"></c:set>
<%
// 实际上就等于这段代码
String ctx = request.getContextPath();
%>
而下面那一种是在浏览器执行时,将 一个已经确定的字符串赋存到 js的window内。
<script type="text/javascript" >
<!--
CTX = '${pageContext.request.contextPath}';
// 注意!!这里会发生两次变化,第一次是服务器处理EL表达式。
// 之后将处理后的代码发送给浏览器,这时这个值已经是死的并不是一个变量了。
// 实际你审查html,你会看到如下代码。(最后js写的不标准,未定义就直接用了)
CTX = '/demo';
//-->
</script>
再之后 你其他的js文件里就可以通过CTX设置获取项目目录。
至于Ajax 里 还是 ${ctx},这说明你这个js是写到html文件里的。
如果是引用外部script那${ctx}就不能用了。

TA贡献1820条经验 获得超9个赞
1、在.jsp文件里的js代码里,可以这么写:${数据} //${}是jsp里的表达式语言EL啊
2、在.js文件里的js代码,不能使用表达式语言。
添加回答
举报