目前,我正尝试将Confident CAPTCHA集成到我的JSF项目中。类ConfidentCaptchaClient
的构造函数如下:
public ConfidentCaptchaClient(String settingsXmlFilePath, HttpServletRequest request, javax.servlet.ServletConfig servletConfig)
这需要ServletConfig
个参数。如何在托管bean中获取它?
答案 0 :(得分:1)
这是一个黑客。 ServletConfig
的含义基本上是包含Servlet
参数的对象。您将在ServletRegistration
界面中找到几乎相同的方法和信息。如果你从ServletContext
本身拉出配置参数并填充ServletConfig
的自定义实现,那就完全相同了。试试这个:
检索ServletContext
对象
FacesContext facesContext = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext) context.getExternalContext(); // Your servlet context here
从servlet上下文中,获取所需servlet的servlet注册对象
ServletRegistration reg = servletContext.getServletRegistration("theServlet"); //ServletRegistration contains all the info you'll need to populate a custom ServletConfig object
使用您从(2)中派生的信息填充ServletConfig
的自定义impl
ServletConfig myServletConfig = new MyCustomServletConfig();
myServletConfig.setInitParams(reg.getInitParameters()); //do a simple transfer of content
最后一步是过度简化,但你会明白这一点。
如果您运行的是以前版本的Java EE(3.0之前版本),则您可以访问现已弃用的ServletContext#getServlet()
。