2012-04-05 17 views
0

まあ、私の古い質問の後:NullPointerExceptionが

Are there some issue at inserting some check into template?

Is it a good idea to filter inside a JSF template?

私は、フィルタを書いて、時には(いなくても同じで、このアプリケーションでは、この行にNulPointerExceptionを返します。



     chain.doFilter(req, res); 

と私は理由を理解していない...私のフィルターの 完全なコードは次のとおりです。問題は、可能性があり



    @WebFilter(filterName = "RolesFilter", urlPatterns = {"/*"}, 
    initParams = { 
     @WebInitParam(name = "param", value = "value")}) 

    public class RolesFilter implements Filter { 

     @Override 
     public void init(FilterConfig config) throws ServletException { 
      // NOOP. 
     } 

     @Override 
     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
      HttpServletRequest request = (HttpServletRequest) req; 
      HttpServletResponse response = (HttpServletResponse) res; 
      HttpSession session = request.getSession(false); 
      UserBean user = (session.getAttribute("userBean") != null) ? (UserBean) session.getAttribute("userBean") : null; 
       String uri=request.getRequestURI(); 

    if(!uri.endsWith("index.xhtml") && !uri.endsWith(".css") && !uri.endsWith(".js") && !uri.endsWith("template.xhtml")) 
    { 
      if (user == null || user.getCognome() == null) 
       response.sendRedirect("/cdg/faces/index.xhtml"); 
      else { 
       String app=uri.substring(0,uri.lastIndexOf("/")); 
       app=app.substring(app.lastIndexOf("/")+1,app.length()); 
       HashMap> privilegi= (HashMap)user.getPrivilegi(); 
       Long idAppl=((AbstractController)session.getAttribute(app+"Controller")).getIdApplicazione(); 
       Short[] privPoss=((AbstractController)session.getAttribute(app+"Controller")).getPrivilegiPossibili(); 
    //--- if privPoss has only 3 value the application is a classic application with 2 roles so I can use a generic check, if the number is different I must do a specific check. 
          if(privilegi.get(idAppl)!=null && privPoss.length==3) 
          { 
     if((privilegi.get(idAppl)).get(privPoss[0])==null && (uri.endsWith("Edit.xhtml") || uri.endsWith("Create.xhtml"))) 
       response.sendRedirect("/cdg/faces/index.xhtml"); 
      } else { 
           if(idAppl==35) 
           { 
            ProgettiController pc=(session.getAttribute("progettiController")!=null) ? (ProgettiController)session.getAttribute("progettiController") : null; 
     if(privilegi.get(idAppl).get(privPoss[1])==null && uri.endsWith("progetti/Create.xhtml")) 
       response.sendRedirect("/cdg/faces/index.xhtml"); 
     else if(uri.endsWith("progetti/Edit.xhtml") 
    && (!privilegi.get(idAppl).get(privPoss[5]).equals("0") && !UserBean.isInString(pc.getSelected().getIdAzienda().getId()+"",privilegi.get(idAppl).get(privPoss[5]),"#"))) 
       response.sendRedirect("/cdg/faces/index.xhtml"); 
     else if((uri.endsWith("attivita/Create.xhtml") || uri.endsWith("attivita/Create.xhtml")) 
    &&(!pc.getSelected().getIdResponsabile().equals(user.getUtente()))) 
       response.sendRedirect"/cdg/faces/index.xhtml"); 
     else if(uri.endsWith("attivita/Edit.xhtml") 
    && (!privilegi.get(idAppl).get(privPoss[2]).equals("0") && !UserBean.isInString(pc.getSelected().getIdAzienda().getId()+"",privilegi.get(idAppl).get(privPoss[2]),"#"))) 
       response.sendRedirect("/cdg/faces/index.xhtml"); 
     else if((uri.endsWith("progettiQualifica/Create.xhtml") || uri.endsWith("progettiQualifica/Create.xhtml")) 
    && (!pc.getSelected().getIdResponsabile().equals(user.getUtente()))) 
       response.sendRedirect("/cdg/faces/index.xhtml"); 
     else if((uri.endsWith("progettiSchede/Create.xhtml") || uri.endsWith("attivita/Create.xhtml")) 
    && (!pc.getSelected().getIdResponsabile().equals(user.getUtente()))) 
       response.sendRedirect("/cdg/faces/index.xhtml"); 
    } 
           else if(idAppl==2) 
           { 
            RisorseController rc=(session.getAttribute("risorseController")!=null) ? (RisorseController)session.getAttribute("risorseController") : null; 
     if(privilegi.get(idAppl).get(privPoss[0])==null && (uri.endsWith("Create.xhtml") || uri.endsWith("Edit.xhtml"))) 
       response.sendRedirect("/cdg/faces/index.xhtml"); 
     else if(uri.endsWith("Edit.xhtml") 
    && (!rc.getSelected().equals(user.getUtente()))) 
       response.sendRedirect("/cdg/faces/index.xhtml"); 
           } 
           } 
          } 
     } 
       chain.doFilter(req, res); 

    } 

     @Override 
     public void destroy() { 
      // NOOP. 
     } 

    } 

この回答の前に、私のコードから行を削除して、フィルタが正しく動作しているように見えますが、この行は問題を引き起こす可能性がありますか?



    System.out.println("The uri is:"+request.getRequestURI()); 

doFilterメソッドで... はあなたの助けをありがとう場合は、最初の後でした!

答えて

0

doFilter(ServletRequest, ServletResponse, FilterChain)メソッドは、nullの値を3番目のパラメータとして使用している可能性があります。

これを確認しましたか?

+0

しかし、彼は「ときどき(同じ時点ではない)」と言っています... – adarshr

+0

これは質問を変更しません。 –

+0

もし彼が 'null'を渡していれば、むしろ一貫して' NullPointerException'を返すだろうか? – adarshr

関連する問題