如何解决openapi生成了ENUM值未知的Jackson
我用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。
我找不到办法。
解决方法
如果有人有类似的问题,我刚刚找到了解决方法:
您必须为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 指出优先主题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。