gpt4 book ai didi

java - 带有 @Context 注释的 HttpServletResponse 始终为 null

转载 作者:行者123 更新时间:2023-12-01 20:00:30 25 4
gpt4 key购买 nike

我是 JAX-RS 的新手,我正在尝试了解 @Context 注释的工作原理。我有一个 REST 服务,目前正在使用某些过滤器对不同的请求类型进行额外的处理。其中一个过滤器内有以下行:

public class SentryFilter {
@Context
HttpServletResponse response;

...

该值稍后将在该过滤器的 filter() 方法中使用。问题是响应对象为空。我已经通过调试器进行了单步调试,但无法确定它为何为空。

根据我在 JAX-RS 文档中读到的内容,HttpServletResponse 的 @Context 注释可以由资源方法填充。因此,我修改了我调用的 API 以包含 HttpServletResponse

public interface APIStuff {
@Path("deviceName")
@GET
@Sentry
String getDeviceName(@PathParam("deviceId") @Size(min = 1, max = 1024) final String deviceId, @Context HttpServletResponse httpServletResponse);

...

这会返回相同的 HttpServletResponse is null 错误。

那么问题来了,这个值应该“填充”在哪里呢?编写过滤器类的人显然是相信 response 对象会被填充,所以我不认为这是传入 @Context HttpServletResponse 的问题到 filter() 方法。

最佳答案

@Context注释允许您将请求/响应上下文详细信息注入(inject) JAX-RS 提供程序和资源类。可以将注入(inject)执行到类字段、bean 属性或方法参数中。

可用于注入(inject)的类型在此 answer 中列出。 。

<小时/>

您尚未提供有关应用程序部署方式的任何详细信息,但请注意 HttpServletResponse仅当应用程序部署在 servlet 容器(例如 Tomcat)中时,才可用于注入(inject)。这可能是你的问题。

关于java - 带有 @Context 注释的 HttpServletResponse 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com