【问题标题】:how to prevent overriding while retrieving node property from AEM in jsp page?在jsp页面中从AEM检索节点属性时如何防止覆盖?
【发布时间】:2016-11-15 10:56:36
【问题描述】:

我在 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>

【问题讨论】:

  • 你能显示一些代码吗?
  • function openWindow() 在全局命名空间中,因此第二个组件包含会覆盖函数定义。
  • 那我该怎么办?
  • @PriyankDave 封装您的前端代码。每次渲染组件时都会执行 sn-p 中的代码。组织它的更好方法是将您的 JS 代码放在客户端库中。然后,您可以使用Module pattern 从组件标记中读取相关信息(例如从数据属性中)。

标签: jsp aem


【解决方案1】:

AEM 是一种基于服务器端组件的架构。

当你创建一个组件时,把它想象成一个可重用的 sn-p 代码,可以通过你输入的参数进行自定义。

由于您将两个组件放在同一页面上,因此所有内容都将在该页面上处于同一级别。如前所述,这就是您获得覆盖的原因。

因此,要改进您的代码,首先要删除与“页面”相关的所有内容,并专注于您的组件所需的内容。

<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>

您不需要标题或正文,因为您应该将这些组件放到已经包含这些组件的页面上的 parsys 中。

有多种方法可以将脚本修改为每个组件唯一,例如传入参数

<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> 

【讨论】:

    猜你喜欢
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2019-09-13
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多