【问题标题】:What is the difference between using "is" or "get" in java when calling it with HTL使用 HTL 调用 java 时使用“is”或“get”有什么区别
【发布时间】:2021-06-11 01:27:09
【问题描述】:

在 AEM 中,当我们调用要在 HTL 前端代码中使用的某个方法或函数时,类似这样。

public boolean isAboolean() {
    return "test";
}

对于 HTML,模板语言 HTL

<sly data-sly-test.boolean="${property.Aboolean}" />

“get”也会出现同样的情况,我们是否需要在 HTL 代码中添加它或者我们可以只写方法名称而不使用“is”或“get”?

我们必须这样做,还是会这样做?

<sly data-sly-test.boolean="${property.isAboolean}" />

【问题讨论】:

  • page 上查看“Getter 和 Setter 的命名约定”
  • 谢谢,我的问题更多关于模板语言 HTL,如果调用“{property.isAboolean}”将与“{property.Aboolean}”相反
  • 您可以使用property.isAboolean()(带括号,表示实际的方法调用)或property.aboolean(指定将转换为方法调用的属性名称)。

标签: java aem sightly


【解决方案1】:

HTL specification 有点通用,表示您可以像这样访问成员${myObject.key}。默认实现 (Sling/AEM) 遵循 JavaBeans 命名约定,并将尝试调用 getKey()isKey()。如果是 POJO,它还将尝试调用 key() 或输出名为 key 的字段。 AEM docs(属性访问部分)中提供了更多信息。

对于您的示例,您需要调整 HTL 表达式中成员的大小写:${property.aboolean}${property.isAboolean} 都应该导致调用 isAboolean() 方法。

由于不允许调用带参数的方法,所以不使用括号。

【讨论】:

    猜你喜欢
    • 2010-10-05
    • 2022-12-20
    • 2015-05-11
    • 2015-01-17
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    相关资源
    最近更新 更多