速度模板foreach循环

时间:2017-08-14 09:58:18

标签: java html velocity

我正在尝试从ArrayLists的HashMap中获取两个参数,以便构建标记。

我的.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);

我想知道这是否是正确的语法,因为我没有得到任何结果。我手动构建了URL,因此我知道它们是正确的。

1 个答案:

答案 0 :(得分:0)

您有地图值列表,但您所做的只是迭代列表。您还必须为map进行迭代才能获得两个值

<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>