2

目前,我正在尝试将Confident CAPTCHA集成到我的 JSF 项目中。该类的构造函数ConfidentCaptchaClient如下:

public ConfidentCaptchaClient(String settingsXmlFilePath, HttpServletRequest request, javax.servlet.ServletConfig servletConfig)

这需要一个ServletConfig论据。如何在托管 bean 中获取它?

4

1 回答 1

1

这是一个黑客。什么ServletConfig是,基本上是一个包含 a 参数的对象Servlet。您会在ServletRegistration界面中找到几乎相同的方法和信息。因此,如果您将配置参数从ServletContext自身中提取出来并填充到ServletConfig. 尝试这个:

  1. 检索ServletContext对象

    FacesContext facesContext = FacesContext.getCurrentInstance();
    ServletContext servletContext =  (ServletContext) context.getExternalContext(); // Your servlet context here
    
  2. 从 servlet 上下文中,获取所需 servlet 的 servlet 注册对象

    ServletRegistration reg =   servletContext.getServletRegistration("theServlet"); //ServletRegistration contains all the info you'll need to populate a custom ServletConfig object
    
  3. 使用您从 (2) 中获得的信息来填充的自定义 implServletConfig

    ServletConfig myServletConfig = new MyCustomServletConfig();
    myServletConfig.setInitParams(reg.getInitParameters()); //do a simple transfer of content
    

最后一步是过度简化,但你会明白的。

如果您运行的是以前版本的 Java EE(3.0 之前),您将可以访问ServletContext#getServlet()现在已弃用的版本。

于 2013-04-06T07:50:17.547 回答