2012-04-30 35 views
2

我是新玩2.0,我正在寻找一种方法来迭代哈希映射在html模板中。 我有一个绑定到模型(Java端)的表单,它有一个名为articles的hashmap(Long,List(Article))属性。如何迭代HTML模板中的哈希映射

在旧版本中,我有一个阵列列表来代替hashmap。 在我的模板中,我使用了运行良好的@repeat帮手。

@repeat(editBusinessForm("articles"), min = 0) { article => 
    @businessarticle(article) 
} 

我尝试了几种方法来调整这个@repeat或@for但我找不到方法。

我需要根据类别过滤器仅显示部分文章。我选择了hashmap来做到这一点,但也许有另一种方式。

任何帮助表示赞赏。

回答

3

你可以这样做:

@for(key <- yourHashMap.keySet()){ 
    //get you content 
    yourHashMap.get(key) 
    //do what you need with the list<articles> 
    //example 
    @repeat(yourHashMap.get(key)) { article => 
      @businessarticle(article) 
    } 
} 

希望这会有所帮助。

+0

对不起,对于迟到的答案。此代码帮助我了解如何迭代地图。我现在的问题是要知道如何使用表单数据来做到这一点。假设我有一个“editBusinessForm”,这将不起作用: @for(key < - editBusinessForm(“articles”)。keySet()) 因为editBusinessForm(“articles”)是一个字段,我无法找到一种检索相关Map的方法。 感谢您的帮助。 – user431015

+0

嗯,我想你可以使用editBusinessForm(“articles”)。value但它会给你一个字符串,我不知道是否有帮助。查看文档[java字段](http://www.playframework.org/documentation/api/2.0/java/index.html)或[scala字段](http://www.playframework.org/documentation /api/2.0/scala/index.html#play.api.data.Field)。没有太多的帮助,我猜你只有价值的方法 –

+0

是的我已经看过Field方法和“价值”不适合原因,因为你说,它给了我一个字符串,我不能处理用。我以为我可以使用与List一起使用的索引方法,但不能与Map一起使用。我正在尝试其他解决方法,但没有结果。谢谢 – user431015

14
@for((key, value) <- yourMap) { 
    … 
}