2017-08-14 91 views
0

我试图从ArrayLists的HashMap中获取两个参数以建立一个标记。速度模板foreach循环

我.vm文件目前看起来是这样的:

<ul style="list-style:none;"> 
    #foreach ($x in $documents) 
     <li><a href="${x.get("documentPath")}" target="_blank">${x.get("documentTitle")}</a></li> 
    #end 
</ul> 

这是我正在创建的HashMap的:

final ArrayList<Map<String, String>> documentsList = new ArrayList<>(); 
if (recallInfo.getDocuments() != null && !recallInfo.getDocuments().isEmpty()) 
{ 
    final String contextPath = ServletActionContext.getServletContext().getContextPath(); 
    for (final SessionDocument document : recallInfo.getDocuments()) 
    { 
     final String documentPath = contextPath + "/content/document/view?id=" + document.getId(); 
     final String documentTitle = Strings.shorten(document.getTitle(), 60); 
     Map<String, String> documents = new HashMap<>(); 
     documents.put("documentPath", documentPath); 
     documents.put("documentTitle", documentTitle); 
     documentsList.add(documents); 
    } 
} 
templateContext.put("documents", documentsList); 

我想知道这是否是因为我使用了正确的语法我没有收到任何结果。我已经手动构建了这些网址,因此我知道它们是正确的。

回答

1

您有地图值列表,但您所做的只是迭代列表。你必须做迭代的地图也为了得到两个值

<ul style="list-style:none;"> 

    #foreach ($document in $documents) 
     #foreach ($map in $document.keySet()) 

      <li><a href="${document.get("documentPath")}" target="_blank">${document.get("documentTitle")}</a></li> 
     #end 
    #end 
</ul>