目前,我正在尝试将Confident CAPTCHA集成到我的 JSF 项目中。该类的构造函数ConfidentCaptchaClient
如下:
public ConfidentCaptchaClient(String settingsXmlFilePath, HttpServletRequest request, javax.servlet.ServletConfig servletConfig)
这需要一个ServletConfig
论据。如何在托管 bean 中获取它?
目前,我正在尝试将Confident CAPTCHA集成到我的 JSF 项目中。该类的构造函数ConfidentCaptchaClient
如下:
public ConfidentCaptchaClient(String settingsXmlFilePath, HttpServletRequest request, javax.servlet.ServletConfig servletConfig)
这需要一个ServletConfig
论据。如何在托管 bean 中获取它?
这是一个黑客。什么ServletConfig
是,基本上是一个包含 a 参数的对象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) 中获得的信息来填充的自定义 implServletConfig
ServletConfig myServletConfig = new MyCustomServletConfig();
myServletConfig.setInitParams(reg.getInitParameters()); //do a simple transfer of content
最后一步是过度简化,但你会明白的。
如果您运行的是以前版本的 Java EE(3.0 之前),您将可以访问ServletContext#getServlet()
现在已弃用的版本。