Mapstruct使用qualifiedByName时出现NullPointerException问题排查求助
Mapstruct转换触发NullPointerException的原因
直接触发点:你定义的
dataToBase64方法没有处理入参为null的情况。当loadedImage.data或resultImage.data为null(甚至loadedImage/resultImage本身就是null时,链式调用得到的data也会是null),直接调用JDK的Base64.getEncoder().encodeToString(data)会触发空指针——因为该方法内部会尝试读取数组长度,而null数组没有长度属性。Mapstruct的行为逻辑:Mapstruct默认不会对自定义转换器的入参做null拦截,只要源字段路径解析后的值是
null,就会直接将null传递给标注了@Named的转换器方法,不会自动跳过或处理null场景。触发场景:出现该错误时,传入转换方法的
Task对象必然存在以下情况之一:loadedImage为null,导致loadedImage.data取到nullloadedImage不为null,但loadedImage.data为nullresultImage为null,导致resultImage.data取到nullresultImage不为null,但resultImage.data为null
内容的提问来源于stack exchange,提问作者Tachank.a
相关产品推荐
相关产品推荐

