迭代StringTemplate中的列表

时间:2014-05-21 07:17:58

标签: java stringtemplate

我有一张Java地图

Map<String, Object> model = new HashMap<>();

此地图的每个(键,值)对都是网址列表:

List<String> thumbnailImgUrl = new ArrayList<>();
for (....) {
    thumbnailUrl.add(url);
}
model.put("photoUrl", thumbnailImgUrl);

我正在传递对象&#34; model&#34;到StringTemplate。

如何在字符串模板中访问各个网址?

Notification(model) ::= <<
  {how can I access the individual urls here?}
>>

4 个答案:

答案 0 :(得分:1)

我已将此问题标记为重复,但为了防止再讨论如何使用Java进行强制转换或迭代,正确的StringTemplate模板可以解答这个问题

Notification(model) ::= <<
    <model.photoUrl:{v | model.photoUrl[<i>]=<v> }>
>>

map.key访问地图中的项目,<list:{v|<v>}>部分遍历列表并将一个无限的子模板应用于列表的每个元素。

答案 1 :(得分:0)

获取对象并将其强制转换为类类型 -

List<String> urls = (List<String>)(model.get("photoUrl"));

答案 2 :(得分:0)

为我尝试这项工作

for (Map.Entry<String, String[]> entry : model.entrySet()) {
        ArrayList<String> urlLst= (ArrayList<String>) entry.getValue();
        for(String url:urlLst)
            System.out.println(url);
}

答案 3 :(得分:0)

要实现这一目标, 您必须以下列方式使用循环和临时变量:

Notification(model) ::= <<
$model.thumbnailImgUrl: {thumbnailImgUrl | URL is :- $thumbnailImgUrl.url$}$
>>

我希望这会有所帮助。