AEM HTL data-sly-list 仅将数组打印为字符串

AEM HTL data-sly-list just prints array as a string

我有一个 Java 文件返回带有 button_text 属性

的按钮数组列表
    public void activate() throws Exception {

        buttonsNode = getResource().adaptTo(Node.class).getNode("buttons");
        buttons = new ArrayList<Button>();

        try{

            NodeIterator ni = buttonsNode.getNodes();

            while (ni.hasNext()) {

                Node n = (Node)ni.nextNode();

                    String button_text = n.getProperty("buttonText").getString();

                    Button bs = new Button(button_text);
                    buttons.add(bs);


            }
        }
        catch(Exception e){

        }

    }
    public ArrayList<Button> getButtonsListObject(){
        return buttons;
    }
   public class Button {
       String button_text;

       public Button(String button_text) {
           this.button_text = button_text;
       }

       public String getButtonText() {
           return button_text;
       }
   }

如果我把

       <ul data-sly-list.button="${PillButtons.buttons}">
            <li>${button}</li>
        </ul>

在我的 HTL 中,我只得到一个列表,其中一个项目只是纯文本数组:"[{ "buttonText": one},{ "buttonText": two},{ "buttonText": three} ]

正在做

   <ul data-sly-list.button="${PillButtons.getButtonsListObject}">
      <li>${button}</li>
    </ul>

Returns 包含三个项目的列表,但它们都是空白的。

如何正确访问和打印这个 ArrayList?

第一次尝试,我不确定 ${PillButtons.buttons} 是从哪里来的,也许你也有 String getButtons() 那 returns 那 JSON。

对于第二个,你在 ${PillButtons.getButtonsListObject} 中使用了正确的方法(你也可以使用 ${PillButtons.buttonsListObject} 因为 HTL 足够聪明,可以寻找 getter)但是你也需要打印出 <li>${button.buttonText}<li> 以获得预期的输出。