目前,我正在尝试将自信验证码集成到我的JSF项目中。类ConfidentCaptchaClient
的构造函数如下:
public ConfidentCaptchaClient(String settingsXmlFilePath, HttpServletRequest request, javax.servlet.ServletConfig servletConfig)
这需要一个ServletConfig
参数。如何将其放入托管bean中?
这是一个hack。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
的自定义实现ServletConfig myServletConfig = new MyCustomServletConfig(); myServletConfig.setInitParams(reg.getInitParameters()); //do a simple transfer of content
最后一步是一个过度简化,但你会明白的。
如果您运行的是以前版本的Java EE(3.0之前),则可以访问现在已弃用的ServletContext#getServlet()
。