Как предотвратить переопределение при получении свойства узла из AEM на странице JSP?
Я создал страницу JSP в AEM и перетащить 2 одинаковых компонента из Parsys. в 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>
1 ответ
AEM - это компонентная архитектура на стороне сервера.
Когда вы создаете компонент, думайте о нем как о повторно используемом фрагменте кода, который можно настраивать с помощью введенных вами параметров.
Поскольку вы размещаете два компонента на одной странице, все будет на этой странице на одном уровне. Как уже упоминалось, именно поэтому вы получаете перезаписать.
Поэтому, чтобы улучшить свой код, сначала удалите все, что связано со "страницей", и сфокусируйтесь на том, что нужно именно для вашего компонента.
<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>
Вам не нужен заголовок или тело, потому что вы должны поместить эти компоненты в 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("./linkpage")%>');">
<%=properties.get("./linkpage")%>
</a>
Это излишне для того, что вы специально пытаетесь сделать здесь. Что вы могли бы просто реализовать как
<a href='<%=properties.get("./linkpage")%>' target='_blank'><%=properties.get("./linkpage")%>
</a>