@Service("XXXService")
public class GoodsServiceImpl implements GoodsService {
//商品展示图片路径
private List goodsPicturePath;
@Resource
//商品Dao接口
private GoodsDao goodsDao;
@Override
public void uploadImg(HttpServletRequest request) {
```
```
//获取前台传过来的图片,代码略(此处没问题)
//随机生成图片名称
String imgName = UUID.randomUUID().toString() + ".jpeg";
//使用IO流,给文件命名,指定存放目标文件地址
String destPath = localPath + systemSeparator + imgName;
//*********此处会报空指针异常*********
//想把每一次生成的图片路径放到goodsPicturePath集合里保存,最后插到数据库中,一致没有找到什么好的解决方法
this.goodsPicturePath.add(destPath + ";");
}
}
尝试是用静态变量声明一个集合。
在使用前,赋值一个集合
@Override
public void uploadImg(HttpServletRequest request) {
```
```
//获取前台传过来的图片,代码略(此处没问题)
//随机生成图片名称
String imgName = UUID.randomUUID().toString() + ".jpeg";
//使用IO流,给文件命名,指定存放目标文件地址
String destPath = localPath + systemSeparator + imgName;
this.goodsPicturePath = new ArrayList();
this.goodsPicturePath.add(destPath + ";");
}
你可以试试这样,用bean创建对象:
@Bean
private List goodsPicturePath(){
return new ArrayList<>();
}
你需要了解一下静态变量和单例模式。项目中有工具类吧?有的话在工具类中创建一个静态单例的List goodsPicturePath 对象。用的时候直接Utils.getGoodsPicturePath();返回这个集合。这个集合相对于项目就是全局唯一的。不过集群和分布式项目不适用(可以用redis中的队列代替)
private List goodsPicturePath(){
return new ArrayList<>();
}
每次调用这个方法就行了。