aem - HTL 无需 Getter 即可访问属性

标签 aem sightly htl

我正在编写一个 AEM 组件,并且返回一个来自 SDK 的类型的对象。该类型具有公共(public)属性并且没有 setter/getter 。为了简单起见,它可以这样定义:

class MyItem {
    public String prop1;
    public String prop2;
}

现在通常,我需要一个 getter,如下所示:

class MyItem {
    public String prop1;
    public String prop2;

    public String getProp1() {
        return prop1;
    }
}

但我没有这种奢侈。现在,我有一个 Java 实现,它使用另一种类型来解决这个问题,但我认为 HTL 不允许我直接访问 prop1 (它调用 getter),这有点疯狂。我已经查看了文档,但看不到任何关于如何完成此操作的指示。我希望能够写:

${item.prop1}

并让它访问公共(public)属性,而不是调用 getProp1()

这可能吗?

最佳答案

如果公共(public)字段是由 Java Use 类声明的,则不需要这些字段的 getter。 Apache Sling 中实际上有一个涵盖此场景的测试:

https://github.com/apache/sling/blob/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/repopojo.html

这也适用于从 bundle 导出的使用类。

对于使用适配器模式的吊带模型 [0] 我创建了 https://issues.apache.org/jira/browse/SLING-7075 .

[0] - https://sling.apache.org/documentation/bundles/models.html#specifying-an-alternate-adapter-class-since-110

关于aem - HTL 无需 Getter 即可访问属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805937/

相关文章:

java - 获取 AEM Adaptive Form 中的文件附件路径以在 JSP 中使用来发送带附件的电子邮件?

aem - 视觉上无法识别 html

aem - 获取 clientlibs 文件的路径

AEM : How to Iterate a HTL list in reverse order?

javascript - 确保组件的客户端库文件仅在组件存在时加载到页面上的最佳方法是什么?

adobe - 在 CQ DAM 中添加自定义元数据命名空间

javascript - 在cq5中使用带有xtype html5smartimage的图像组件时如何限制上传图像的大小?

aem - data-sly-use、data-sly-resource、data-sly-include 和 data-sly-template 之间有什么区别?

AEM Sightly - 将变量传递给 JS

aem - 从视觉上的 javascript 使用函数调用 OSGi 服务