所以我有这条HTL
<div class="col-lg-6"><a href="${properties.targetURL@context='uri'}" class="black_transparent_button">View all fishes|${properties.targetURL}</a></div>
当我在本地AEM中查看页面(以发布方式查看)时,这是呈现的HTML
<div class="col-lg-6">View all fishes|/content/myhost/en/fishes.html</div>
可以看出,a标签已经消失。
作为测试,我尝试直接使用相对链接:
我尝试使用/不使用context = uri,我也遇到了同样的问题。
<div class="col-lg-6"><a href="/content/myhost/en/fishes.html" class="black_transparent_button">View all fishes</a></div>
a标签也消失了。使用完整网址(例如http://www.myhost.com/content/myhost/en/fishes.html)可以正常工作。
关于如何修复它的任何想法?
由于
编辑:我还在测试环境中(在云中并由Adobe托管)尝试了第二个代码(使用相对URL的代码),我也遇到了同样的问题。
答案 0 :(得分:1)
最有可能发生这种情况,因为您的properties.targetURL
格式错误,删除<a>
很可能是因为antiSammy在HTL实施中用于XSS保护和HTML验证。
采用以下示例(AEM 6.3):
<a href="${'https://www.google.com'}">google</a> <!-- google -->
<a href="${'hi'}"></a> <!-- hi -->
<a href="${'https://hello'}"> hello </a> <!-- hello -->
<a href="${null}"> null </a> <!-- null -->
呈现:
<a href="https://www.google.com">google</a> <!-- google -->
<!-- hi -->
<a href="https://hello"> hello </a> <!-- hello -->
<a> null </a> <!-- null -->
请注意,我在这里使用HTL表达式
${}
,而不是直接href="string"
,只验证了HTL表达式。
一个链接不是格式正确的网址,<a>
标记已被删除。另请注意,如果表达式的计算结果为null,则会呈现<a>
,但会根据HTL规范删除href
。
希望这会有所帮助。
PS,您可以使用HTL REPL快速测试,而无需设置组件。
答案 1 :(得分:1)
Day CQ Link Checker Transformer配置验证URL是否是实例上的有效内容资源,如果未完成链接标记(不包括绝对URL)。以下是配置快照
以下可能是原因
您可以Disable Checking
进行验证。如果这在这种情况下有效,则双重检查URL路径是否是有效资源。