我没有找到上述问题的答案。我如何从InjectableProvider引发异常,并陷入ExceptionMapper,以便提供自定义响应?

最佳答案

亚历克斯,帕维尔,

我自己尝试过:


一个Joda DateTime可注射提供者:PerRequestTypeInjectableProvider<PathParam, DateTime>
一个映射器,用于将异常转换为可以由客户端接受的格式(XML,JSON等)可序列化的对象:ExceptionMapper<WebApplicationException>


根据我的实验,似乎在WebApplicationException中抛出的任何InjectableProvider都会绕过异常映射器,因此格式不正确。

我也尝试过:


添加ExceptionMapper<ParamException>
重命名类,希望它们的连接顺序遵循字母顺序,


但到目前为止没有运气。

@Pavel /泽西岛的任何人:欢迎任何建议!

谢谢,

渣。



更新

如果将逻辑包装在InjectableProvider / try块的catch中,则在catch块中,诀窍是:


创建您的可序列化POJO /您的自定义响应,
将其包装为具有相应状态代码和/或媒体类型的javax.ws.rs.core.Response
将其作为实体参数传递给WebApplicationException


@Pavel /泽西岛上的任何人:是否有其他选择可以避免这种额外的逻辑并使事情“正常运行”?

10-05 23:39