在 JavaScript alert() 中打印 EL 字符串 “RP” 会导致 JS 错误“'RP'
Printing EL string "RP" in a JavaScript alert() causes JS error "'RP' is undefined"
在我的servlet中,我正在创建一个多维数组,我试图在我的JSP中使用它来检查某些东西。 这是我在 servlet 中的设置:
List<List<String>> tableList = new ArrayList<List<String>>();
for (String selectedItem : selectedItems)
{
String schedcombo = selectedItem;
Integer modifyScheduleNum = Integer.parseInt(schedcombo.substring(0,5));
Integer modifyContractYear = Integer.parseInt(schedcombo.substring(5,9));
String newStatus = request.getParameter("ModifyStatus_" + selectedItem);
String newStatusDate = request.getParameter("ModifyStatusDate_" + selectedItem) ;
System.out.println("Schedule Number being processed is " + modifyScheduleNum +
" with contract year of " + modifyContractYear +
" with modified status of " + newStatus +
" with modified Status Date of " + newStatusDate);
List<String> rowpull = new ArrayList<String>();
rowpull.add(schedcombo.substring(0,5));
rowpull.add(schedcombo.substring(5,9)) ;
rowpull.add(newStatus);
rowpull.add(newStatusDate);
tableList.add(rowpull);
request.setAttribute("preeditList",tableList) ;
}
我打印了处理后的数组,它看起来像这样:
添加到表中的表的数组列表是:[[43080, 2016, RP, 2016-02-04]]
在 JSP 上,我正在对我的表进行循环,在循环中我检查 ArrayList 以查看 servlet 中是否有进程。 这是我的 JSP 代码:
for(var i=0; i<updateformID.selectedSched.length; i++)
{
var checkSchedule = document.getElementById("checkedTable").rows[i + 1].cells[1].innerHTML;
var checkYear = document.getElementById("checkedTable").rows[i + 1].cells[2].innerHTML;
alert("CheckSchedule being pulled outside the ForEach is " + checkSchedule) ;
<c:remove var="cksched"/>
<c:forEach items="${preeditList}" var="editTable">
<c:set var="cksched" value="${editTable[0]}" scope="request" />
alert("schedule number Inside the foreach loop " + <c:out value="${cksched}"/>) ;
<c:set var="ckeftyear" value="${editTable[1]}" scope="request" />
alert("eft contract year Inside the foreach loop " + <c:out value="${ckeftyear}"/>) ;
<c:set var="ckstatus" value="${editTable[2]}" scope="request" />
alert("sched status Inside the foreach loop " + <c:out value="${ckstatus}"/>) ;
<c:set var="ckstatusDate" value="${editTable[3]}" scope="request" />
<c:if test="${cksched == checkSchedule}">
<c:set var="checkfound" value="YES" scope="request"/>
</c:if>
</c:forEach>
alert ("The checkfound variable after the foreach is " +
<%= request.getAttribute("checkfound") %> ) ;
}
在对屏幕进行调试时,当我到达 ckstatus 字段上的警报消息时,它失败了,说"RP"未定义。 前两个正确显示。
我的问题是,当我添加到 rowpull 数组时,我没有正确地将其作为字符串或警报中的语法或实际处理中的语法放入错误吗?
再次感谢
鉴于列表的第三个元素是字符串"RP",以下代码行:
<c:set var="ckstatus" value="${editTable[2]}" scope="request" />
alert("sched status Inside the foreach loop " + <c:out value="${ckstatus}"/>) ;
生成以下 JavaScript 代码:
alert("sched status Inside the foreach loop " + RP) ;
因此,此 JavaScript 代码尝试显示 JavaScript 变量的值RP
。由于尚未定义此类变量,因此其值为 undefined
。
我的建议是,如果你真的需要从JavaScript代码中访问数据,那就是
- 定义包含字段的适当类,而不是将所有内容作为字符串填充到列表的随机元素中
- 使用 JSON 封送器将这些对象序列化为 JSON,并将该 JSON 字符串放入请求属性中
只需拥有
var arrayOfObjects = ${theJsonString};
在JSP中,为了初始化一个包含JavaScript对象数组的JS变量,然后你可以在JS代码的其余部分使用它。
我想我在 2010 年的一个问题中找到了答案。 它是这样说的:
最好的解决方案是让 JSP/JSTL 生成一个 JavaScript 对象变量,稍后可以在 JS 代码中访问该变量。
var groupMap = {
<c:forEach items="${configuredGroupMap}" var="groupMap" varStatus="loop">
"${groupMap.key}": "${groupMap.value}"${!loop.last ? ',' : ''}
</c:forEach>
};
这将在客户端中结束如下(右键单击页面并查看源代码以确保
) var groupMap = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
};
最后重写 checkSelection(),如下所示:
function checkSelection(group, tvalue) {
if (groupMap[group] == tvalue) {
alert("equal");
}
}
在阅读本文时让我感到困惑的是函数中为"组"传递的内容。 是在 for 循环中完成的索引号以显示 GroupMap[0] 或传递"key1"或"value1"值的内容。
我没有足够的声誉点可以在线程中询问,而且无论如何都是 6 年前。 任何人都知道"组"的传递意味着什么
感谢您的帮助。
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 使用JS将数组转换为json对象
- Node.js v6.2.0类扩展不是函数错误
- 当js函数's已执行
- 要求未定义JS回调参数
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 如何从Java/scala调用js美化程序
- 如何更改<svg>标记为<img>用js标记
- 如何使用 node.js 比较两个 json 数组
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- Selectize.js:如何对整数值的选项进行排序
- 在 JavaScript alert() 中打印 EL 字符串 “RP” 会导致 JS 错误“'RP'