Adobe 如何在sightly中迭代对象列表?

Adobe 如何在sightly中迭代对象列表?,adobe,aem,sightly,Adobe,Aem,Sightly,我创建了一个Java类方法getmyPages(),它返回iterator。 现在在HTML页面中,我可以实例化该类并访问该类的其他属性 但是,我想以currentPage.listChildren的工作方式迭代这个迭代器 因为currentPage.listChildren返回iterator 我也同样返回 但是我不能。。。。。。我在其中打印的HTML标记是空的。您可以使用数据列表属性在迭代器上循环。以下是Sightly教程的摘录: <ul data-sly-list.child="${

我创建了一个Java类方法
getmyPages()
,它返回
iterator
。 现在在HTML页面中,我可以实例化该类并访问该类的其他属性

但是,我想以
currentPage.listChildren
的工作方式迭代这个迭代器

因为
currentPage.listChildren
返回
iterator
我也同样返回


但是我不能。。。。。。我在其中打印的HTML标记是空的。

您可以使用
数据列表
属性在迭代器上循环。以下是Sightly教程的摘录:

<ul data-sly-list.child="${currentPage.listChildren}">
  <li>${child.title}</li>
</ul>
链接到教程:


数据列表的文档编制

您可以使用
数据列表
属性在迭代器上循环。以下是Sightly教程的摘录:

<ul data-sly-list.child="${currentPage.listChildren}">
  <li>${child.title}</li>
</ul>
链接到教程:

数据列表的文档

java类 公共类TabControl扩展了WCMUse{

@Override
public void activate() throws Exception {
    // nothing to be done here in this case
}

  public Iterator<Map<String, Object>> getTabTitles(){

      final I18n i18n = new I18n(getRequest());
      List<Map<String, Object>> infos = new LinkedList<Map<String,Object>>();
      String[] tabTitles = getProperties().get("tabs", String[].class);
   if (tabTitles == null || tabTitles.length == 0) {
         tabTitles = new String[1];
         tabTitles[0] = i18n.get("Tab One from sightly");
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("tabTitle",  tabTitles[0]);
         infos.add(map);
   }else if(tabTitles.length > 0){
       for (String tab : tabTitles) {
           Map<String, Object> map = new HashMap<String, Object>();
           map.put("tabTitle",  tab);
           infos.add(map);   
    }
   }
   return  infos.iterator();
}



 }
@覆盖
public void activate()引发异常{
//在这种情况下,这里没有什么可以做的
}
公共迭代器getTabTitles(){
最终I18n I18n=新I18n(getRequest());
List infos=new LinkedList();
String[]tabTitles=getProperties().get(“tabs”,String[].class);
if(tabTitles==null | | tabTitles.length==0){
tabTitles=新字符串[1];
tabTitles[0]=i18n.get(“Tab One from sightly”);
Map Map=newhashmap();
map.put(“tabTitle”,tabTitles[0]);
添加(地图);
}else if(tabTitles.length>0){
用于(字符串选项卡:选项卡标题){
Map Map=newhashmap();
map.put(“tabTitle”,tab);
添加(地图);
}
}
返回infos.iterator();
}
}
java类 公共类TabControl扩展了WCMUse{

@Override
public void activate() throws Exception {
    // nothing to be done here in this case
}

  public Iterator<Map<String, Object>> getTabTitles(){

      final I18n i18n = new I18n(getRequest());
      List<Map<String, Object>> infos = new LinkedList<Map<String,Object>>();
      String[] tabTitles = getProperties().get("tabs", String[].class);
   if (tabTitles == null || tabTitles.length == 0) {
         tabTitles = new String[1];
         tabTitles[0] = i18n.get("Tab One from sightly");
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("tabTitle",  tabTitles[0]);
         infos.add(map);
   }else if(tabTitles.length > 0){
       for (String tab : tabTitles) {
           Map<String, Object> map = new HashMap<String, Object>();
           map.put("tabTitle",  tab);
           infos.add(map);   
    }
   }
   return  infos.iterator();
}



 }
@覆盖
public void activate()引发异常{
//在这种情况下,这里没有什么可以做的
}
公共迭代器getTabTitles(){
最终I18n I18n=新I18n(getRequest());
List infos=new LinkedList();
String[]tabTitles=getProperties().get(“tabs”,String[].class);
if(tabTitles==null | | tabTitles.length==0){
tabTitles=新字符串[1];
tabTitles[0]=i18n.get(“Tab One from sightly”);
Map Map=newhashmap();
map.put(“tabTitle”,tabTitles[0]);
添加(地图);
}else if(tabTitles.length>0){
用于(字符串选项卡:选项卡标题){
Map Map=newhashmap();
map.put(“tabTitle”,tab);
添加(地图);
}
}
返回infos.iterator();
}
}

在我的Java代码中,我返回一个列表,然后使用

Java类

public class ListFilesUse extends WCMUsePojo{

private String name;

private List<TrFile> files = new ArrayList<TrFile>();
public类listfilesue扩展了WCMUsePojo{
私有字符串名称;
私有列表文件=新的ArrayList();
明显地

<div data-sly-use.test="apps.ecolorado.components.sharedcontent.ListFilesUse">
    ${test.name}
    <ul data-sly-list.child="${test.files}">
        <li>${child.fileName}</li>
    </ul>
</div>

${test.name}
  • ${child.fileName}

这是正在运行的代码。

在我的Java代码中,我返回一个列表,然后使用

Java类

public class ListFilesUse extends WCMUsePojo{

private String name;

private List<TrFile> files = new ArrayList<TrFile>();
public类listfilesue扩展了WCMUsePojo{
私有字符串名称;
私有列表文件=新的ArrayList();
明显地

<div data-sly-use.test="apps.ecolorado.components.sharedcontent.ListFilesUse">
    ${test.name}
    <ul data-sly-list.child="${test.files}">
        <li>${child.fileName}</li>
    </ul>
</div>

${test.name}
  • ${child.fileName}

这是正在运行的代码。

你能不能也发布你的Sighly代码,这将有助于理解你的问题。虽然可能只有列表,但我从未使用迭代器尝试过。你可以将迭代器转换为包含以下问题答案的列表:你能发布你的Sighly代码吗,这将有助于理解你的问题。虽然可能只允许列表,但我从未使用迭代器尝试过。你可以将迭代器转换为列表,并给出以下问题的答案: