我没有找到上述问题的答案。我如何从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 /泽西岛上的任何人:是否有其他选择可以避免这种额外的逻辑并使事情“正常运行”?