我可以建议组合使用uri上下文和从服务器端向资源url添加.html扩展。
使用
@ context = 'uri'
,的默认上下文
href
和
src
.html
扩展。
输入
-
<a href="${'/content/dam/repl/en.pdf'}">Resource Link</a>
输出
-
<a href="/content/dam/repl/en.pdf">Resource Link</a>
对于任何其他html属性,使用属性上下文-
@ context='attribute'
-
<div data-link="${'/content/dam/repl/en.pdf' @ context='attribute'}"/>
输出
-
<div data-link="/content/dam/repl/en.pdf"/>
再次使用
,无法逃脱
&
在url中,也可以很好地与选择器和#参数配合使用。增加了XSS保护的优势。
-
<a href="${'http://www.reddit.com.selector1.selector2?a=1&b=2&c=3'}">URI context</a>
-
<a href="http://www.reddit.com.selector1.selector2?a=1&b=2&c=3">URI context</a>
不能在同一元素中同时使用@extension和@context。
<a href="${path}.html">Title</a>
或者更好的方法是在sling模型级别解决这个问题,比如这样一个util方法。
public static String getUrl(String link, String extension, ResourceResolver resourceResolver) {
String updatedLink = "";
if (link != null) {
Resource pathResource = resourceResolver.getResource(link);
// check if resource exists
if (pathResource != null) {
// append .html
updatedLink = resourceResolver.map(link) + extension;
}
}
return updatedLink;
}
@ context='unsafe'
出于明显的原因-完全禁用xss保护。
检查
this
对于可用的上下文表达式选项。