【问题标题】:AEM HTL data-sly-list just prints array as a stringAEM HTL data-sly-list 仅将数组打印为字符串
【发布时间】:2022-01-07 22:45:55
【问题描述】:

我有一个 Java 文件,它返回一个带有 button_text 属性的 ArrayList 按钮

    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?

【问题讨论】:

    标签: java arraylist aem sightly


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多