繁体   English   中英

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

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

我有一个 Java 文件,它返回一个 ArrayList 的带有 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>

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

如何正确访问和打印此 ArrayList?

对于第一次尝试,我不确定${PillButtons.buttons}来自哪里,也许您还有一个返回 JSON 的String getButtons()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM