如何在JSF Managed bean中访问ServletConfig



目前,我正在尝试将自信验证码集成到我的JSF项目中。类ConfidentCaptchaClient的构造函数如下:

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

这需要一个ServletConfig参数。如何将其放入托管bean中?

这是一个hack。ServletConfig基本上是一个包含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)中获得的信息来填充ServletConfig的自定义实现

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

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

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

相关内容

  • 没有找到相关文章

最新更新