我正在尝试从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,因此我知道它们是正确的。
答案 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>