我正在编写一个AEM组件,我有一个返回的对象,它是SDK中的一个类型。此类型具有公共属性,没有getter。为简单起见,可能会这样定义:
class MyItem {
public String prop1;
public String prop2;
}
现在通常,我需要一个吸气剂,就像这样:
class MyItem {
public String prop1;
public String prop2;
public String getProp1() {
return prop1;
}
}
但我没有这种奢侈品。现在,我有一个使用其他类型来解决这个问题的Java实现,但我认为HTL不允许我直接访问prop1
(它调用getter)有点疯狂。我已经查看了文档,但看不出有关如何完成此操作的任何迹象。我希望能写下来:
${item.prop1}
让它访问公共财产而不是调用getProp1()
。
这可能吗?
答案 0 :(得分:2)
如果Java Use-class声明了这些字段,则不需要公共字段的getter。实际上,Apache Sling中的测试涵盖了这种情况:
这也适用于从包中导出的Use-classes。
对于使用适配器模式[0]的吊索模型,我创建了https://issues.apache.org/jira/browse/SLING-7075。
答案 1 :(得分:-1)
来自官方documentation
初始化use-class后,运行HTL文件。在此阶段,HTL通常会引入use-class的各种成员变量的状态并呈现它们。
要从HTL文件中提供对这些值的访问,您必须根据以下命名约定在use-class中定义自定义getter方法:
getXyz形式的方法将在HTL文件中公开一个名为xyz的对象属性。 例如,在以下示例中,方法getTitle和getDescription结果可以在HTL文件的上下文中访问对象属性标题和描述:
HTL解析器确实枚举了所有公共属性,就像任何包含getter和public memebers的公共fuield的枚举一样。
虽然你是否应该有公共变量,但这不是讨论的一部分,这是值得怀疑的。实质上,ot应该像其他人一样工作。