Java List 元素在锚标记内未定义

Posted

技术标签:

【中文标题】Java List 元素在锚标记内未定义【英文标题】:Java List element is undefined inside anchor tag 【发布时间】:2021-12-06 22:06:53 【问题描述】:

有一个列表定义为:

List<String> list = Arrays.asList("Abc", "Def");

问题出在锚标签内,列表元素未定义。

for (int i = 0; i < list.size(); i++) 
  <a id="<%=list.get(i)%>" href="javascript:;" onClick="openWindow(<%=list.get(i)%>);" align="left">Proceed</a>
 

openWindow函数定义如下:

function OpenHierarchyWindow(id) 
  alert("id value "+id.value);

警报函数给出未定义的输出。为什么list.get(i) 无法获取锚标签内的数据。

【问题讨论】:

不相关,但内联 onClick 不会像写的那样工作,因为字符串没有被引用。 @DaveNewton onClick 正在工作,我收到了警报。问题是 list.get(i) 没有获取列表元素。 渲染 JSP 时会生成什么 html 在 OpenHierarchyWindow() 内部,另一个窗口正在打开window.open("list.htm?ACTION=loadData&amp;DIMENSIONS="+id.value,"WindowDimension1","width=600,height=570,top=100,left=200,scrollbars=1");。此窗口已打开,但由于上述问题,DIMENSIONS="+id.value 生成为Dimensions=undefined(list.get(i) 在锚标记内以未定义形式出现) &lt;%@ attribute name="list" type="java.util.Collection" %&gt;?发布完整的代码或至少可重现的代码。 【参考方案1】:

这里应该引用 onClick javascript 函数中的 JSP 脚本。 你可以替换

onClick="openWindow(<%=list.get(i)%>);"

onClick="openWindow('<%=list.get(i)%>');"

下面是相同的完整代码。

<%@ page import="java.util.List"%>
<%@ page import="java.util.Arrays"%>

<!DOCTYPE html>
<html>
<head>
<title>JSP Scriplets And Java Script</title>

<script type="text/javascript">
    function OpenHierarchyWindow(id) 
        alert("id value " + id);
    
</script>

</head>
<body>

    <%
    List<String> list = Arrays.asList("Abc", "Def");
    
    for (int i = 0; i < list.size(); i++) %>
    <a id="<%=list.get(i)%>" href="javascript:;" onClick="OpenHierarchyWindow('<%=list.get(i)%>');" align="left">Proceed</a>
    <%%>
</body>
</html>

【讨论】:

以上是关于Java List 元素在锚标记内未定义的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS element.innerHTML 在指令内未定义

Blade:Foreach 循环内未定义的变量

范围内未定义简单的 AngularJS 表单

GraphQL:field.resolve() 结果在指令内未定义

NgRX实体:ID在州内未定义

TypeError:无法读取 Vue.js 中 foreach 内未定义的属性“详细信息”