我有一个Servlet,它在从SQL获取数据之后设置请求属性(它将返回一个列表):
request.setAttribute("statsRegionList", statsRegionList);我有一个jsp文件,它有一个下拉文件,下拉内容由另一个请求属性加载。基于下拉选择,我需要检查'statsRegionList‘,并获得与下拉列表中选择的区域匹配的特定区域所需的结果。
在阅读了一些论坛之后,有人提到外部.js文件将无法获得请求属性,因此需要在.jsp本身中设置这个属性。因此,我在jsp中规定:
<body>
<script type="text/javascript">
var regionList = <%=request.getAttribute("statsRegionList")%>;
</script>但是,在IE上的控制台上,它会显示错误: SCRIPT1014:无效字符文件:仪表板,行: 625,列: 47 (无效字符是@,它作为对象列表插入)。
谢谢你的帮助。
发布于 2016-06-29 05:09:58
霍格你说得对。
我找到了解决办法,这就是我所做的。由于.external js文件无法读取请求属性,所以我从jsp中创建了一个全局变量,以便可以在.js文件中使用。请求属性返回了一个ArrayList,因此在创建全局变量时,它也应该是数组格式的。
下面是来自.jsp的代码片段
<script type="text/javascript">
var regions = [
<c:forEach items="${statsRegionList}" var="region" varStatus="status">
{region: '${region.name}', Devices : '${region.DeviceCount}'}
<c:if test="${!status.last}">
,
</c:if>
</c:forEach>
];
</script>这将确保创建一个对象数组。在外部.js文件中,全局变量var区域现在是可访问的,可以迭代查找与下拉选择匹配的所需细节。从.jso文件中截取的代码如下:
dropdownSelect = $("#regionSelect option:selected").text();
var regionsArr = regions;
if ($.isArray(regionsArr)){
Object.keys(regionsArr).forEach(function (key) {
if(regionsArr[key]['region']== dropdownSelect){
var x=document.getElementById('RegionTable').rows;
x[0].cells[1].innerHTML=regionsArr[key]['DeviceCount'];
}
});
}https://stackoverflow.com/questions/38068036
复制相似问题