标记在呈现的HTML中消失(在href属性中使用HTL)

时间:2018-03-29 00:48:20

标签: aem sightly htl

所以我有这条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的代码),我也遇到了同样的问题。

2 个答案:

答案 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)。以下是配置快照

enter image description here

以下可能是原因

  1. 相对URL具有有效的URL字符,但内容路径不是实例上的有效资源。
  2. 根据resource resolver mappings
  3. ,网址不是有效资源

    您可以Disable Checking进行验证。如果这在这种情况下有效,则双重检查URL路径是否是有效资源。