我在aem中创建了JSP页面,并从parsys中拖放了2个相同的组件。在jsp我正在检索其中组件之一的值onclick。但每次我得到最后一个的价值。财产价值是压倒一切的。有人可以帮帮我吗?
<%@include file="/libs/foundation/global.jsp"%>
<html>
<head>
<title>Link Components</title>
</head>
<script>
var link;
function openWindow() {
link = "<%=properties.get(". / linkpage ")%>";
alert(link);
window.open("<%=properties.get(". / link ")%>");
hyperlink = "<%=properties.get(". / link ")%>"
}
</script>
<body>
<a href="#" onclick="javascript:openWindow();">
<%=properties.get("./linkpage")%>
</a>
</body>
</html>
答案 0 :(得分:0)
AEM是基于服务器端组件的架构。
当您创建组件时,请将其视为可重复使用的代码段,可以根据您输入的参数进行自定义。
由于您将两个组件放在同一页面上,因此所有内容都将位于同一级别的该页面上。如上所述,这就是你获得覆盖的原因。
因此,为了改进您的代码,请先取出任何内容&#34; page&#34;相关并专注于您所需要的内容。
<script>
var link;
function openWindow() {
link = "<%=properties.get(". / linkpage ")%>";
alert(link);
window.open("<%=properties.get(". / link ")%>");
hyperlink = "<%=properties.get(". / link ")%>"
}
</script>
<a href="#" onclick="javascript:openWindow();">
<%=properties.get("./linkpage")%>
</a>
您不需要标题或正文,因为您应该将这些组件放入已经包含这些组件的页面上的解析中。
有多种方法可以将脚本修改为每个组件的唯一方法,例如传递参数
<script>
var link;
function openWindow(foo) {
link = "<%=properties.get(". / linkpage ")%>";
alert(foo);
window.open(foo);
hyperlink = foo
}
</script>
<a href="#" onclick="javascript:openWindow('<%=properties.get("./linkpage")%>');">
<%=properties.get("./linkpage")%>
</a>
对于你在这里特别想要做的事情来说,这太过分了。您可以将其实现为
<a href='<%=properties.get("./linkpage")%>' target='_blank'><%=properties.get("./linkpage")%>
</a>