0

所以我有这块 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 标签也消失了。使用完整的 URL(即http://www.myhost.com/content/myhost/en/fishes.html可以正常工作。

关于如何解决它的任何想法?

谢谢

编辑:我还在我们的测试环境(在云中并由 Adob​​e 托管)中尝试了第二个代码(使用相对 URL 的代码),我遇到了同样的问题。

4

2 回答 2

1

发生这种情况很可能是因为您properties.targetURL的 URL 格式不正确,并且删除<a>最可能是由于antiSammy用于 XSS 保护和 HTML 验证的 HTL 实现。

以以下示例(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,则会根据 HTL 规范<a>呈现 ,但会删除 。href

希望这可以帮助。

PS,您可以使用HTL REPL进行快速测试,而无需设置组件。

于 2018-03-29T02:26:28.467 回答
1

Day CQ Link Checker Transformer 配置验证 URL 是否是实例上的有效内容资源,如果不是,则删除完整的链接标记(绝对 URL 除外)。以下是配置截图

在此处输入图像描述

以下可能是原因

  1. 相对 URL 具有有效的 URL 字符,但内容路径不是实例上的有效资源。
  2. URL 不是每个资源解析器映射的有效资源

您可以通过 验证Disable Checking。如果这在这种情况下有效,请仔细检查 URL 路径是否为有效资源。

于 2018-03-29T02:42:51.540 回答