2

現在、 Confident CAPTCHAを JSF プロジェクトに統合しようとしています。クラスのコンストラクタはConfidentCaptchaClient次のとおりです。

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

これにはServletConfig引数が必要です。マネージドBean内で取得するにはどうすればよいですか?

4

1 に答える 1

1

これはハックです。つまりServletConfig、基本的にはのパラメーターを含むオブジェクトServletです。インターフェイスには、実質的に同じメソッドと情報がありServletRegistrationます。したがって、構成パラメーターをそれ自体から引き出してServletContext、のカスタム実装に入力しても、すべて同じですServletConfig。これを試して:

  1. ServletContextオブジェクトを取得する

    FacesContext facesContext = FacesContext.getCurrentInstance();
    ServletContext servletContext =  (ServletContext) context.getExternalContext(); // Your servlet context here
    
  2. サーブレット コンテキストから、目的のサーブレットのサーブレット登録オブジェクトを取得します

    ServletRegistration reg =   servletContext.getServletRegistration("theServlet"); //ServletRegistration contains all the info you'll need to populate a custom ServletConfig object
    
  3. (2) から得た情報を使用して、のカスタム impl を設定します。ServletConfig

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

最後のステップは単純化しすぎていますが、おわかりいただけると思います。

ServletContext#getServlet()以前のバージョンの Java EE (3.0 より前) を実行していた場合は、非推奨になった にアクセスできます。

于 2013-04-06T07:50:17.547 に答える