Disons que j'ai ce code:comment injecter des en-têtes dans un `@context HttpServletRequest`?
@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");
}
}
Je comptais appeler l'entrée de repos Point/test et récupérer la chaîne bar
.
Mais tout ce que je vois est nul
Si je @HeaderParam("foo")
je récupère correctement la variable, mais je dois accéder à la throug @Context HttpServletRequest
.
vous dites que les en-têtes du contexte de la demande sont dans un autre conteneur que les en-têtes de la demande? Comment '@ HeaderParam' fonctionne ??? –
'@ HeaderParam' est extrait du ContainerRequestContext, pas du HttpServletRequest. Le ContainerRequestContext est construit à partir de HttpServletRequest, puis Jersey utilise simplement ContainerRequestContext pour le traitement, pas le HttpServletRequest –