aem - 如何检查 HTL (AEM) 中 undefined variable 属性?

标签 aem sightly htl

这里是 AEM 新手。 假设我有:

<div
     data-text="${myVariable.someProperty}"
     ...

如果未定义,我不希望数据文本返回“未定义”字符串。我尝试使用逻辑运算符,但它不起作用..

<div
     data-text="${myVariable.someProperty ? myVariable.someProperty : ''}"

我认为 myVariable.someProperty 返回未定义而不是 bool 值。有什么想法可以检查 HTL 中的未定义(或者我做的事情完全错误)吗?

最佳答案

HTL 不会为未定义的值呈现任何内容。假设一个 JS 使用对象:

logic.js:

use(function () {
    return {
        test: undefined
    };
});

和一个HTL脚本:

<div data-sly-use.logic="logic.js" data-text="${logic.test}"></div>

输出将是:

<div></div>

该属性被删除,因为它是假的(请参阅 attributes detailed examples )。如果您想保留该属性,您可能需要将 HTL 表达式修改为 ${logic.test ||真}

如果您修改使用对象以返回 'undefined' 字符串:

use(function () {
    return {
        test: 'undefined'
    };
});

然后你会得到以下输出:

<div data-text="undefined"></div>

在这种情况下,您可能需要修改表达式来测试 'undefined' 字符串: ${logic.test == 'undefined' ? '':逻辑.测试}。同样,您可以通过将 '' 替换为 true 来保留该属性。

关于aem - 如何检查 HTL (AEM) 中 undefined variable 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48758723/

相关文章:

java - Cq 6.0和6.1 sql2请求结果不同,但内容相同

javascript - 如何将 XML 值读入 Javascript 或 jQuery

java - 谁可以在 useradmin 中为 aem 6.3 中的用户添加模拟者

java - 在 JSP 或 CQ5 中获取 url 减去当前文件名

AEM Sightly - 是否可以创建自定义数据隐藏属性?

aem - 重定向实现

dialog - 如何在 aem 6 触摸对话框中创建单选按钮

aem - 视力/HTL/AEM : using "tel:" on an href parameter (a tag) doesn't work

html - Sightly:迭代一个列表并使用其索引打印另一个列表(不嵌套,只是共享索引)

java - AEM 6.3 使用 OSGi R6 注释和 Sling 模型