我正在尝试通过公共过滤器解析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
答案 0 :(得分:1)
您需要通过@FrontierResponse
来装饰资源类的方法,而不是资源类。或者,如果要对所有请求使用过滤器,则可以注释Application
类的扩展名。 Check spec for more details.
编辑:
从v2.0开始,@NameBinding
在JAX-RS中。您需要使用该规范的实现,即Jersey 2.x.在球衣1.x中,这个注释将被忽略。