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>
以获得预期的输出。
我有一个 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>
以获得预期的输出。