openapi生成了ENUM值未知的Jackson

时间:2020-10-23 07:59:23

标签: jackson openapi swagger-codegen

我用openapi-codegen创建了一个rest-api。作为参数,有一个包含两个ENUM的对象。

例如

public enum DocumentType {
FOTO_ID("PHOTO_ID");
[...]
}

如果我发送的文档类型不是“ PHOTO_ID”,则收到以下响应

Cannot construct instance of `[...]`, problem: Unexpected value '[...]'
at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 2, column: 21] (through reference chain: [...])

这是正确的,但是我想抓住它并发送自己的ErrorResponse。

我找不到办法。

1 个答案:

答案 0 :(得分:0)

如果有人有类似的问题,我刚刚找到了解决方法:

您必须为JsonMappingException设置自己的ExceptionMapper。 设置优先级是导入的,否则将不使用您的映射器。

    @Named
    @Singleton
    @Provider
    @Priority(1)
    public class JsonMappingExceptionMapper implements ExceptionMapper<JsonMappingException> {

    @Override
    public Response toResponse(JsonMappingException exception) {
        [...]
        }
    }

信用: Jersey unable to catch any Jackson Exception 指出优先主题。