我在WEB-INF下创建了一个test.jspx文件,我试图通过请求调度程序的servlet访问它,但我得到了java.lang.RuntimeException: Cannot find FacesContext
。
web.xml
映射如下:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
如果我使用.jsp
,它可以正常工作。
我的请求调度程序代码如下:
RequestDispatcher dispatcher=getServletContext().getRequestDispatcher("/WEB-INF/test.jspx?sessid="+id);
dispatcher.forward( request, response );
答案 0 :(得分:1)
请求网址(您在浏览器地址栏中看到)或转发网址(您在RequestDispatcher#forward()
中使用的)必须匹配FacesServlet
的网址格式为了让它在JSF页面中运行和处理所有JSF组件。
您已将FacesServlet
映射到/faces/*
的网址格式,并且您尝试从某个自制的servlet调用它(为什么?),因此转发网址必须与该网址格式匹配。将页面放在/WEB-INF
之外,然后转发到/faces/test.jspx
。