ModelMapper:为什么会有NullPointerException?

时间:2018-11-05 13:24:39

标签: modelmapper

在我的实体中,我保留一个fileName。在我的DTO中,我想要获取文件内容。 我尝试写一个映射:

@Configuration
public class FabricMapper {


    public FabricMapper(ModelMapper modelMapper, Environment env) {


        Condition<Fabric, FabricDTO> isFile = ctx -> ctx.getSource().getPictureFileName() != null;

        modelMapper.createTypeMap(Fabric.class, FabricDTO.class).addMappings(mapper -> {
            mapper.map(src -> src.getFabricMaterial().getId(), FabricDTO::setFabricMaterialId);
            mapper.map(src -> src.getFabricType().getId(), FabricDTO::setFabricTypeId);
            mapper.when(isFile).map(src -> {

                String filePath = env.getProperty("images.path")
                        .concat("/")
                        .concat(String.valueOf(src.getOwner().getId()))
                        .concat(env.getProperty("image.fabric.path"))
                        .concat("/")
                        .concat(src.getPictureFileName())
                        .concat(env.getProperty("image.extention"));


                File file = new File(filePath);
                String imgB64 = "";
                InputStream targetStream;
                byte[] imageBytes;
                try {
                    targetStream = new FileInputStream(file);
                    imageBytes = new byte[(int) file.length()];
                    targetStream.read(imageBytes, 0, imageBytes.length);
                    targetStream.close();
                    imgB64 = Base64.encodeBase64String(imageBytes);
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                return imgB64;

            }, FabricDTO::setPicture);
        });
    }

}

第一个映射(FabricMaterial和FabricType)正在工作,但是当我尝试运行该应用程序时,第三个映射给了我NullPointerException,说src为null(显然)。

那么我认为我不应该这样写我的映射器,但是我找不到找到写它的方法。我已经阅读了ModelMapper文档,但对我来说却很不透明。

关于如何从映射器的文件路径中获取文件内容的任何建议?

0 个答案:

没有答案