freemarker 直接使用List来遍历set集合,可能会报错
2015-04-09 16:28
302 查看
转摘:http://www.javaweb1024.com/java/JavaWebzhongji/2015/04/08/528.html
freemarker 直接使用List来遍历set集合,可能会报错! 错误如下
Java代码
private Set<Article> articles = new HashSet<Article>();
Freemarker中遍历
报错信息
Underlying collection is not a list, it's org.hibernate.collection.internal.PersistentSet
freemarker.template.TemplateModelException: Underlying collection is not a list, it's org.hibernate.collection.internal.PersistentSet
at freemarker.ext.beans.CollectionModel.get(CollectionModel.java:127)
at freemarker.core.SequenceBuiltins$chunkBI$ChunkedSequence$1.get(SequenceBuiltins.java:792)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:176)
at freemarker.core.Environment.visit(Environment.java:428)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
at freemarker.core.Environment.visit(Environment.java:428)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167)
at freemarker.core.Environment.visit(Environment.java:428)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.Environment$1.render(Environment.java:246)
at com.eecart.template.directive.BaseDirective.setLocalVariable(BaseDirective.java:184)
at com.eecart.template.directive.ArticleCategoryRootListDirective.execute(ArticleCategoryRootListDirective.java:51)
at freemarker.core.Environment.visit(Environment.java:274)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:126)
at freemarker.core.Environment.visit(Environment.java:221)
解决方案:
不直接使用 articles
@Transient
public List<Article> getMyArticles(){
List<Article> list = new ArrayList<Article>(articles);
return list;
}
QQ群: 专注JavaWeb开发官方总群(178744906) 验证消息:JavaWeb1024
freemarker 直接使用List来遍历set集合,可能会报错! 错误如下
Java代码
private Set<Article> articles = new HashSet<Article>();
Freemarker中遍历
[#list category.articles?chunk(5) as article1] <div> <ul> [#list article1 as article ] [#assign articleDesc=i18n_description(article.articleDescriptions,true)/] [#if articleDesc!=null] ${abbreviate(articleDesc.title, 80, "...")} [/#if] [/#list] </ul> </div> [/#list]
报错信息
Underlying collection is not a list, it's org.hibernate.collection.internal.PersistentSet
freemarker.template.TemplateModelException: Underlying collection is not a list, it's org.hibernate.collection.internal.PersistentSet
at freemarker.ext.beans.CollectionModel.get(CollectionModel.java:127)
at freemarker.core.SequenceBuiltins$chunkBI$ChunkedSequence$1.get(SequenceBuiltins.java:792)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:176)
at freemarker.core.Environment.visit(Environment.java:428)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
at freemarker.core.Environment.visit(Environment.java:428)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167)
at freemarker.core.Environment.visit(Environment.java:428)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
at freemarker.core.Environment.visit(Environment.java:221)
at freemarker.core.Environment$1.render(Environment.java:246)
at com.eecart.template.directive.BaseDirective.setLocalVariable(BaseDirective.java:184)
at com.eecart.template.directive.ArticleCategoryRootListDirective.execute(ArticleCategoryRootListDirective.java:51)
at freemarker.core.Environment.visit(Environment.java:274)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:126)
at freemarker.core.Environment.visit(Environment.java:221)
解决方案:
不直接使用 articles
@Transient
public List<Article> getMyArticles(){
List<Article> list = new ArrayList<Article>(articles);
return list;
}
QQ群: 专注JavaWeb开发官方总群(178744906) 验证消息:JavaWeb1024
相关文章推荐
- Java关于集合(list,set,map)的遍历与增强for循环的使用
- java关于集合(list,set,map)的遍历与增强for循环的使用
- 使用遍历数组、Collection、List、Set、Map等
- 遍历List和Set集合的常用方法
- JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
- Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件
- 编程技巧系列(2)Java 集合(List,Set,Map)遍历时有条件删除特定元素
- list和set集合的遍历
- java中List、Set、Map集合的遍历方法总结
- JAVA 集合List,数组,Set,Map,直接的相互转换
- 使用set集合出来list列表的计算
- JSTL遍历数组,List,Set,Map等集合
- 不使用遍历循环、Linq与Lamba表达式快速对List集合进行筛选与排序——在集合类里使用Find、FindAll与Sort
- [Java] 集合类(List、Set、Map的基本使用)
- List、Set集合遍历方式
- List、Set集合遍历方式
- Java:集合,Array、Collection(List/Set/Queue)、Map的遍历,比如:ArrayList,LinkedList,HashSet,HashMap
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与LinkedHashSet类))
- 集合Set、List、Map的遍历方法
- JAVA基础回顾1 遍历List Set 和Map集合的所有方法