假设我有这个代码:
@ApplicationPath("...")
public class MyApp extends ResourceConfig {
public SalesLayerApplication() {
this.register(HeaderInjecterFilter.class);
this.register(Test.class);
}
}
@PreMatching
public class HeaderInjecterFilter implements ContainerRequestFilter {
@Override
public void filter(final ContainerRequestContext crc) throws IOException {
crc.getHeaders().add("foo", "bar");
}
}
@Path("/test")
public class Test {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String dump(@Context final HttpServletRequest request) {
return request.getHeader("foo");
}
}
我希望调用rest入口点/测试并检索字符串 bar
.
但我看到的都是空的
如果我使用 @HeaderParam("foo")
我正确地检索了变量,但是我需要通过 @Context HttpServletRequest
.
1条答案
按热度按时间vd8tlhqk1#
为什么希望向containerrequestcontext添加头也会将其添加到httpservletrequest?这些是完全不相关的实体。试着注射
HttpHeaders
或者你也可以注射ContainerRequestContext
直接。