如何在jsp页面中从AEM检索节点属性时防止覆盖?

时间:2016-11-15 10:56:37

标签: jsp cq5 aem

我在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("./link‌​page")%>
    </a>
</body>

</html>

1 个答案:

答案 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("./link‌​page")%>
</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("./link‌​page")%>');">
    <%=properties.get("./link‌​page")%>
</a>

对于你在这里特别想要做的事情来说,这太过分了。您可以将其实现为

<a href='<%=properties.get("./link‌​page")%>' target='_blank'><%=properties.get("./link‌​page")%>
</a>