AEM属性在<p>中正确显示,但在href属性中不显示

时间:2018-02-01 18:58:00

标签: href aem htl

我正在使用此代码制作自定义多字段痕迹导航组件。

    <ul class="breadcrumb-list">
        <li class="breadcrumb-item" data-sly-repeat.textItem="${properties.text}">
            <a class="breadcrumb-link" href="${properties.link['textItemList.index']}">${textItem}</a>
            <p class="works">${properties.link[textItemList.index]}</p>
            <p class="doesn't work">${properties.link['textItemList.index']}</p>
            <span>//</span>
        </li>
    </ul>

我添加了段落元素以显示我的属性如何显示。

这是html输出:

code output

如果我删除p class =“works”中的单引号,则该值显示breadcrumb项的链接值。如果我在p class =“not not working”中添加单引号,则不显示任何内容。

您认为从href中的相同值中删除引号会将我的链接显示为href;但是,当我删除href值中的引号时,它会完全删除锚标记。当我重新添加它们时,我仍然可以看到锚标记,但根本没有href属性,只有breadcrumb-link类。

如何获取href值以显示链接?

3 个答案:

答案 0 :(得分:0)

AEM在渲染生成的html之前评估al href。

如果链接无效,则不会在href

下放置任何内容

如果表达式无效,它将清除所有部分

您是否使用有效链接进行了测试?

这不仅适用于纯文本。

答案 1 :(得分:0)

当我重新添加它们时,我仍然可以看到锚标记,但根本没有href属性,只有breadcrumb-link类。 - 这是预期的行为。因为你有一个链接数组,并且引号将尝试通过'textItemList.index'键获取数组中的条目,就像在地图中一样,而不是索引。当然没有找到任何东西,因此在没有href属性的情况下渲染锚点。

当我删除href值中的引号时,它会完全删除锚标记。 - 这不是预期的行为。既然你在段落里面说明了它的作用,那么我想这是一个显示上下文问题。根据{{​​3}},HTL应隐式使用uri上下文用于href属性值,text用于HTML元素内的内容。

尝试明确提及href="${properties.link[textItemList.index] @ context = 'uri'}"href="${properties.link[textItemList.index] @ context = 'text'}"等上下文,或检查文档中提到的上下文 - unsafe应该最终完成这项工作。

答案 2 :(得分:0)

如果我删除单引号&#34;&#39;&#34;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;它会显示href,但是由于我的href包含它,因此上述任何上下文都没有完成这项任务。

那里有解决方法吗?