AEM 没有看到来自 Java 的模型字段

问题描述

我有一个想要在 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}