RESTeasy - 如何使用@Context注释设置Response字段

时间:2015-10-27 11:14:58

标签: dependency-injection resteasy

使用RESTeasy 3.0.12,代码

@Context
private org.jboss.resteasy.spi.HttpResponse response;

不起作用。响应始终为空。

如何配置RESTeasy以通过@Context启用注入?

- 代码非常简单: IF:

@Path("api/v1/admin")
@Produces("application/json")
@Consumes("application/json")
public interface AdminService
{

    @PUT
    @Path("resource/{id}")
    ServiceResponse<Resource> updateResource(@PathParam("id") long ....

IMPL:

public class AdminServiceImpl implements AdminService
{

    @Context
    private HttpServletResponse httpServletResponse; // <== instance always null

    @Override
    public ServiceResponse<Resource> updateResource(long resourceId, ...

1 个答案:

答案 0 :(得分:0)

您无法注入org.jboss.resteasy.spi.HttpResponse的实例。来自the docs

  

@Context注释允许您注入javax.ws.rs.core.HttpHeaders,javax.ws.rs.core.UriInfo,javax.ws.rs.core.Request,javax.servlet.HttpServletRequest,javax的实例.servlet.HttpServletResponse,javax.servlet.ServletConfig,javax.servlet.ServletContext和javax.ws.rs.core.SecurityContext对象。

要处理回复,您通常会从ResourceClass方法返回javax.ws.rs.core.Response的实例,或者使用ContainerResponseContext中的ContainerRequestFilter或注入javax.servlet.HttpServletResponse