繁体   English   中英

检索所有GET参数的列表?

[英]Retrieve a list of all GET params?

是否有一种简单的方法可以使用CDI注入快速获取URL中所有GET参数的列表?

我正在寻找的是这样的:

@Inject
Map<String, String> allGetParams;

就像已经说过的那样,您没有开箱即用的功能,但是可以像在CDI 1.1+中那样生成它

public class MyProducer {

    @Produces
    @RequestScoped
    Map<String,String[]> produceParamMap(HttpServletRequest request) {
        return request.getParameterMap();
    }

}

在CDI 1.0中,您将必须使用Apache Deltaspike Servlet模块并编写几乎相同的内容

public class MyProducer {

    @Produces
    @RequestScoped
    Map<String,String[]> produceParamMap(@Deltaspike HttpServletRequest request) {
        return request.getParameterMap();
    }

}

编辑:更多详细信息

生产者(使用@Produces注释声明)是一种在CDI中声明bean的方法。 这样的bean可以像其他任何bean一样注入。 在这里是:

@Inject
Map<String,String[]> params;

因此,您无需调用生产方方法,而是使用CDI容器实例化bean的方法。

当您声明带有参数的生产者方法时,容器将查找与这些参数匹配的bean,以调用该方法。 这些bean的存在是在引导时检查的,并且它们不存在,则抛出异常(就像任何不满意bean的注入点一样)。

在这两种情况下,CDI实现(CDI 1.1+)或Deltaspike框架(CDI 1.0)都为您提供了HttpServletRequest类型的Bean。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM