问题描述
我有一个想要在 HTL 中使用的 Java 模型。它看起来像这样:
public class MyModel {
private Model model;
...
public Model getModel() {return model;}
}
public class Model {
private String myField;
...
public String getMyField() {return myField;}
}
我尝试在我的模板中使用它,如下所示:
<sly data-sly-use.myModel="path.to.package.MyModel" />
<div data-sly-use.localModel="${myModel.model}">${localModel.myField}</div>
但是,当我尝试使用此模型编辑页面时,我收到了 ArrayIndexOutOfBoundException
,不知道从何而来。
当我尝试将 data-sly-use
更改为 data-sly-test
时,没有例外,页面加载,但是带有测试的 div 没有显示,因此显然测试返回 false。
创建此类模型是否需要在 AEM 中进行额外配置才能使用它?
我的类中的字段目前正在被模拟,因此它们不可能为空。
编辑:
当我将 Model
对象包裹在列表中的 MyModel
中并在 HTL 中使用 data-sly-list
时,它会起作用。
解决方法
data-sly-use
用于实例化 Use Objects,而不是用于分配变量;您应该改用 data-sly-set。
或者,您可以只使用 ${myModel.model.myField}
。