[英]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.