我在Tomcat中使用带有使用Jersey 1.x的REST API的Java 1.6 Web应用程序。在ContainerRequestFilter中,我想设置一个属性,然后再检索它。
我在我的过滤器类中开始使用此代码:
containerRequest.getProperties().setProperty("programId","foo");
但我后来究竟该如何检索?
spec说,“在Servlet容器中,属性与ServletRequest同步,并公开ServletRequest中可用的所有属性。属性的任何修改也反映在关联的属性集中ServletRequest中“。
当我尝试检索属性时,我有HttpServletRequest对象的句柄,但该对象没有“.getProperties()”方法。
为了解决这个问题,我最终在我的过滤器类中添加了这样的一行:
HttpServletRequest.setAttribute("programId", "foo");
我稍后可以使用(String)request.getAttribute("programId")
退出。但我很好奇应该如何检索这些属性。
答案 0 :(得分:0)
我一直在努力寻找这个问题的答案 - 最终结果是我认为除了注入请求和演员之外,我认为没有开箱即用的机制它到ContainerRequest,如下所示:
public Response resourceMethod(@Context Request request) {
ContainerRequest containerRequest = (ContainerRequest) request;
MyProperty prop = (MyProperty) containerRequest.getProperties().get("myPropertyName");
我真的不喜欢在资源中执行此操作,因此继续使用自定义注入,详见Custom annotation injection with Jersey 1.x