假设我的页面网址是www.test.com/myproject/en/test.html
。现在,我需要在组件的jsp / html文件中获取“ /myproject/en/test.html
”。我们正在使用。
我正在尝试使用下面的代码来实现它-
<script>
var x = window.location.pathname;
alert(x);
</script>
我在变量/myproject/en/test.html
中获得了值x
,但是不能如下使用meta标签中的值-
<link rel="icon" href="https://mywebsite.com ${x}">
如何在meta标记中传递x
的值?或者,还有其他方法可以实现吗?
答案 0 :(得分:0)
<script>
javascript是在浏览器上执行的客户端代码。
Sightly / jsp是服务器端代码,已经在服务器端进行了编译和呈现。您的收藏夹代码将是服务器端渲染。这是示例:
视域:
<link rel="icon" href="https://mywebsite.com/${currentPage.path}">
缺点: 您的域被硬编码为mywebsite.com。所有环境; qa,uat,登台将显示错误的域。
更好的实现:使用外部化程序。
<sly data-sly-use.page="com.mywebsite.core.PageHelper"/>
<link rel="icon" href="${page.currentPageUrl}">
并创建一个吊索模型助手
@Model(adaptables = SlingHttpServletRequest.class)
public class PageHelper {
@OSGiService
private Externalizer externalizer;
@ScriptVariable
private Page currentPage;
@ScriptVariable
private ResourceResolver resolver;
String currentPageUrl;
@PostConstruct
protected void initModel() {
currentPageUrl = externalizer.publishLink(resolver, currentPage.getPath()) + ".html";
}
public String getCurrentPageUrl() {
return currentPageUrl;
}
奖金:wcm core具有内置的getFavIcons实现。它可以被利用。
答案 1 :(得分:0)
您可以直接使用Sightly提供的请求对象(由Java支持的对象)。
有关完整的URL:
${request.requestURL.toString}
对于当前页面路径:
${currentPage.path} // returns only the path without domain name
对于URL的特定部分:
${request.scheme} // returns https or http
${request.serverName} // returns server name eg: stackoverflow.com
${request.serverPort} // returns server port eg: 4502 for AEM
${request.requestURI} // returns URI eg: /content/test.html
连接特定部分以在Sighlty中创建所需的URL:
<sly data-sly-test.scheme="${request.scheme}"/>
<sly data-sly-test.servername="${request.serverName}"/>
<sly data-sly-test.serverport="${request.serverPort}"/>
<sly data-sly-test.uri="${request.requestURI}"/>
<link rel="icon" href="${scheme}://${servername}:${serverport}${uri}">
在请求对象https://sling.apache.org/apidocs/sling7/org/apache/sling/api/SlingHttpServletRequest.html下可用的方法
其他有用的HTL全局对象: https://docs.adobe.com/content/help/en/experience-manager-htl/using/htl/global-objects.html