2017-03-15 8 views
1

私はこの単純なSessionFilterが私のプロジェクトに追加したが、chain.doFilterが実行されるたびに、それはエラーがスローされます -java.lang.NoSuchMethodErrorの:FacesContext.getAttributes()Ljava/utilに/ MAP

java.lang.NoSuchMethodError:javax.faces.context.FacesContext.getAttributes()Ljava/util/Map;

SessionFilter.java

public class SessionFilter implements Filter { 

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
      throws IOException, ServletException { 

     if (!(req instanceof HttpServletRequest)) { 
      chain.doFilter(req, res); 
      return; 
     } 

     HttpServletResponse response = (HttpServletResponse) res; 

     HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(response) { 
      @Override 
      public String encodeRedirectUrl(String url) { 
       return url; 
      } 

      @Override 
      public String encodeRedirectURL(String url) { 
       return url; 
      } 

      @Override 
      public String encodeUrl(String url) { 
       return url; 
      } 

      @Override 
      public String encodeURL(String url) { 
       return url; 
      } 
     }; 
     try { 
      chain.doFilter(req, wrappedResponse); //Exception here 
     } catch (Exception ex) { 
      System.out.println(ex); 
     } 

    } 

    public void destroy() { 
    } 

    public void init(FilterConfig arg0) throws ServletException { 
    } 
} 

私のプロジェクトでは以下の設定があります。

  • 動的Webモジュール - 3.0
  • のJava - 1.7
  • のJavaServer Facesを - 2.2
  • PrimeFaces - 5.0
  • サーバ - JBossの - 7.0

私はこれについて何か解決策を見つけようとしましたが、何の助けも得られませんでした。これが私の最初のJava Facesプロジェクトなので、これを解決するためのアイデアは実際には得られません。誰も私を正しい方向に向けることができますか?

答えて

1

クラスパスにjsf-api-2.2.jarを追加しましたが、JBoss - 7.0をコンテナとして使用している場合は、jsf-api-1.2_13.jarが付属しています。したがって、コンフリクトがあり、1.2バージョンはコンテナからの設定を取得しており、最初にロードされます。 jsf 2.0からjavax.faces.context.FacesContext.getAttributes()が導入されたため、例外がスローされます。古い瓶を新しいものに交換すると、あなたのために働くかもしれません。

+0

シャリークで働いてくれてありがとう..ありがとう.. :) –

関連する問題