0

我正在尝试通过通用过滤器解析 GET 响应,并根据收到的内容向客户端发送响应。但我无法执行 Filter 类。我在下面添加了代码片段。任何帮助,将不胜感激

@FrontierResponse
@Provider
public class PoweredbyResponseFilter implements ContainerResponseFilter {

@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
        throws IOException {

    if (requestContext.getMethod().equals("GET")) {
        System.out.println("hellos");
    }

    //responseContext.getHeaders().add("X-Powered-By", "Jersey :-)");
}

}

我的自定义注解

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@NameBinding
public @interface FrontierResponse {
}

这是我的资源类

@GET
@FrontierResponse
@Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON})
public List<String> list() {...}

有关我正在使用的其他信息

jersey jersey-bundle-1.17.jar javax.ws.rs-api-2.0.jar

4

1 回答 1

1

你需要用 装饰资源类的方法@FrontierResponse,而不是资源类。Application或者,如果您想对所有请求使用过滤器,您可以注释类的扩展。检查规范以获取更多详细信息。

编辑: @NameBinding自 v2.0 起在 JAX-RS 中。您需要使用该规范的实现,即 Jersey 2.x。在球衣 1.x 中,此注释将被忽略。

于 2013-07-27T05:50:16.743 回答