1

我还没有找到上述问题的答案。如何从 InjectableProvider 抛出异常,并在 ExceptionMapper 中捕获,以便提供自定义响应?

4

1 回答 1

1

亚历克斯帕维尔

我自己尝试过:

  • JodaDateTime可注射供应商:PerRequestTypeInjectableProvider<PathParam, DateTime>
  • 一个映射器,它将异常转换为可序列化的对象,以客户端接受的格式(XML、JSON 等):ExceptionMapper<WebApplicationException>

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

我也试过:

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

但到目前为止还没有运气。

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

谢谢,

马克。


更新

如果将逻辑包装在InjectableProvider/trycatch中,那么在catch块中,诀窍是:

  1. 创建您的可序列化 POJO /您的自定义响应,
  2. javax.ws.rs.core.Response用适当的状态码和/或媒体类型将其包装成一个,
  3. WebApplicationException将其作为实体参数传递给,。

@ Pavel / 来自泽西岛的任何人:有什么替代方法可以避免这种额外的逻辑并使事情“正常工作”?

于 2012-11-29T17:13:50.483 回答