【问题标题】:NPE in ModelAttribute while sending empty list发送空列表时 ModelAttribute 中的 NPE
【发布时间】:2021-03-23 21:44:12
【问题描述】:

我遇到了 feign 客户端问题(spring-boot-starter 2.4.4、spring-cloud-starter-openfeign 3.0.2)。当我试图在 @ModelAttribute 带注释的对象中发送一个空列表时,feign 客户端会抛出带有 NullPointerException 原因的 feign.codec.EncodeException。当列表至少有一个元素时不会出现问题。

有谁知道如何正确覆盖 feign 编码器以启用无错误传递空列表?

【问题讨论】:

    标签: java spring spring-boot spring-cloud-feign feign


    【解决方案1】:

    您需要创建一个实现 feign Encoder 的类 (https://github.com/OpenFeign/feign/blob/master/core/src/main/java/feign/codec/Encoder.java)

    例如

    public class EnableEmptyListEncoder implements Encoder {
       @Override
       public void encode(Object object, Type bodyType, RequestTemplate template) {
        // empty list encode logic here 
       }
    }
    

    如何指向该编码器取决于您的设置:

    -- 通过 application.yml:

    feign:
        client:
            config:
                feignName:
                    encoder: com.example.EnableEmptyListEncoder 
    

    -- 通过构建器:

    Feign.builder()
        .encoder( new EnableEmptyListEncoder()  )
    

    -- 配置类中的一个 bean

    @Bean
    public EnableEmptyListEncoder encoder() {
        return new EnableEmptyListEncoder();
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      相关资源
      最近更新 更多