今天在项目中遇到的问题,jsp页面引用的单独的js文件,但是后台传递的一些参数在js文件中直接用EL表达式获取报错,网上查资料找到了解决方案,做个汇总,以供参考。
JS中使用EL表达式获取后台传递的参数,有两种情况。
第一种情况:
(1)在jsp页面引入jstl标签库:
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
(2)在jsp页面写js代码:
<script>
var merchantId=” ${sessionScope.merchantIdMap}”
</script>
第二种情况:
(1) 在jsp页面引入jstl标签库:
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
(2) jsp文件引入单独的js文件,此时不能在js文件中直接使用EL表达式,会报错,此处有两种处理方式:
第一种:
在jsp页面中用隐藏域存储参数值:
<input type=”hidden” id=merchantIdMap” value=”${sessionScope.merchantIdMap}”>
在js文件中获取此隐藏域的值:var merchantId=$(“#merhantIdMap”);
第二种:
在jsp页面中定义全局的变量:
<c:set var="merchantIdMapGlob" value="${sessionScope.merchantIdMap}" scope="application"/>
<c:set var="warehouseIdMapGlob" value="${sessionScope.warehouseIdMap}" scope="application"/>
<script>
var merchantIdMapGlob = "${merchantIdMapGlob}";
var warehouseIdMapGlob = "${warehouseIdMapGlob}";
</script>
在js文件中可直接使用此全局变量:var merchantId = merchantIdMapGlob;