【问题标题】:Jersey: subresource locator method will ignore @Produces annotation if an exception is thrown while excuting the delegation methodJersey:如果在执行委托方法时抛出异常,子资源定位器方法将忽略 @Produces 注释
【发布时间】:2016-08-26 08:37:56
【问题描述】:

Jersey:如果在执行委托方法时抛出异常,子资源定位器方法将忽略 @Produces 注释。 示例:

@Path("resource")
public class resource{ 
   @Path("a")
   @Produces("application/json")
   public Subresource subresourceDelegation(){
        throw new RuntimeException()
   }
}

现在异常映射器会生成响应,但媒体类型不会设置为 application/json 而是设置为 application/octet-stream,这是默认媒体类型。

谁能帮帮我

【问题讨论】:

    标签: java rest jersey jax-rs


    【解决方案1】:

    使用@Produces(MediaType.APPLICATION_JSON) 而不是@Produces("application/json")

    【讨论】:

    • 两种方式效果一样。 Javadoc:jersey.java.net/apidocs/2.23.2/jersey/javax/ws/rs/core/…
    • 我很抱歉没有检查球衣文档。当我使用 MediaType.APPLICATION_JSON 时,我认为您不能抛出异常并期望 Producer 将其转换为 JSON 格式。相反,您可以在球衣中编写一个异常映射器并处理此异常并按 JSON 格式返回响应状态
    猜你喜欢
    • 2017-07-04
    • 1970-01-01
    • 2019-09-08
    • 2016-08-19
    • 2011-08-23
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多