前言
小编在后端存放多图信息集合时遇到了一个死循环的问题,这里给大家展示一下,可以帮助大家避一下坑
二、使用步骤
1.问题展示
imgList为ContentVo类集合,images也为ContentVo集合,这时会出现栈溢出、死循环的问题
代码如下(示例):
private void extracted(ContentVo content, List<ContentExt> list) {
List<ContentVo> imgList = new ArrayList<>();
List<ResourcesData> dir = new ArrayList<>();
for (ContentExt contentExt : list) {
if(contentExt.getMkey().equals("manyImg")){
ResourcesData resourcesData = resourcesDataService.getById(contentExt.getMvalue());
if(resourcesData!=null){
Content contentImg = new Content();
contentImg.setUrl(resourcesData.getResourceUrl());
contentImg.setManyResourceId(resourcesData.getId());
contentImg.setManyDescription(contentExt.getDescription());
imgList.add(0,contentImg);
}
}
}
content.setImages(imgList);
content.setDirs(dir);
}
ContentVo实体类中的属性
@Excel(name="多图集合")
@TableField(exist = false)
private List<ContentVo> images;
2.解决方法
新建一个实体类Content,属性和ContentVo一样
代码如下(示例):
@Excel(name="多图集合")
@TableField(exist = false)
private List<Content> images;
这里的imgList为Content实体类的集合,然后放到前面提到的ContentVo类中的集合images属性中,问题得到解决
private void extracted(ContentVo content, List<ContentExt> list) {
List<Content> imgList = new ArrayList<>();
List<ResourcesData> dir = new ArrayList<>();
for (ContentExt contentExt : list) {
if(contentExt.getMkey().equals("manyImg")){
ResourcesData resourcesData = resourcesDataService.getById(contentExt.getMvalue());
if(resourcesData!=null){
Content contentImg = new Content();
contentImg.setUrl(resourcesData.getResourceUrl());
contentImg.setManyResourceId(resourcesData.getId());
contentImg.setManyDescription(contentExt.getDescription());
imgList.add(0,contentImg);
}
}
}
content.setImages(imgList);
content.setDirs(dir);
}