javax.faces.FacesException: java.lang.RuntimeException: Cannot find FacesContext

后端 未结 1 827
不思量自难忘°
不思量自难忘° 2020-12-21 15:35

I\'m trying a simple project to work on jboss, but I\'m stuck at this error (I already tried using .jsf on the URL). the application in tomcat work\'s fine

1条回答
  •  萌比男神i
    2020-12-21 16:05

    javax.faces.FacesException: java.lang.RuntimeException: Cannot find FacesContext

    JSF components in the JSP page are complaining that the FacesContext cannot be found. The one responsible for creating this is the FacesServlet.

    Here,

    
        javax.faces.FacesServlet
        *.faces
    
    

    you've declared the FacesServlet to listen on an url-pattern of *.faces. So, to get the FacesServlet to run (and to create the FacesContext) you need to ensure that the request URL matches http://example.com/context/page.faces and thus not http://example.com/context/page.jsp.

    If you rather want to use http://example.com/context/page.jsf, then you need to change the url-pattern of the FacesServlet to *.jsf.


    That said, the FacesRedirectFilter is suspicious as well. Isn't it redirecting *.jsp to *.jsf or so? If so, then you need to modify that filter as well. However, if the sole intent is to prevent users from accessing *.jsp files directly without involvement of FacesServlet, then better add the following security constraint to the web.xml:

    
        Restrict direct access to JSP files
        
            JSP files
            *.jsp
        
        
     
    

    (and remove that Filter).


    Unrelated to the problem, you mentioned JSF 1.2, but you've declared your faces-config.xml as JSF 1.1. Any JSF 1.2 implementation or newer will fall back to JSF 1.1 compatibility. You need to declare it as JSF 1.2 as well.

    
    

    (and get rid of that DOCTYPE)

    0 讨论(0)
提交回复
热议问题