我正在开发一个应用程序,它需要两个接口-一个用于移动电话浏览器,另一个用于普通的PC浏览器。第二个界面需要提供更多的信息和更多的功能。当然,它们都在同一个项目中,使用相同的bean等等,只是表示层发生了变化。就目前而言,我只有手机的接口。当我选择地址://ip-地址:8080/App/时,它是可访问的,但当我尝试直接访问具有该接口的页面://ip-地址:8080/App/page.jsp时,它是不可访问的。我得到了以下错误:
org.apache.jasper.JasperException:在第30行处理JSP页面/page.jsp时发生了异常
javax.faces.context.FacesContext.getCurrentInstance();上下文= javax.faces.context.FacesContext 30:
context.getViewRoot().setLocale(newLocale);31:%> 32: 33:
Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
根本原因
org.apache.jsp.page_jsp._jspService(page_jsp.java:91) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet( javax.servlet.http.HttpServlet.service(HttpServlet.java:717) ) .java:260)
当然,我的web.xml中有设置欢迎页面的信息。
<welcome-file-list>
<welcome-file>faces/page.jsp</welcome-file>
</welcome-file-list>如果我要从web.xml中删除这个部分,我是否能够到达该页面,或者问题是否与其他问题有关?最后,我想通过提供这样的链接来达到不同的界面:
//ip-地址:8080/App/mobile_page.jsp//ip-地址:8080/App/browser_page.jsp
谢谢你的意见。向你问好,塞斯。
发布于 2010-08-19 11:42:38
这个异常说明FacesContext#getCurrentInstance()正在返回null。这意味着没有创建FacesContext。对此负责的是FacesServlet。这反过来意味着根本没有调用FacesServlet。
要调用FacesServlet,您需要确保请求URL与web.xml中定义的FacesServlet的url-pattern匹配。
您似乎已经将FacesServlet映射到了/faces/*上。因此,您需要通过http://ip-address:8080/App/faces/page.jsp而不是http://ip-address:8080/App/page.jsp打开页面。
发布于 2010-08-19 09:57:06
如果使用JSF,不应该直接转到JSP页面,而是通过处理程序(faces/*或*.jsf)
https://stackoverflow.com/questions/3520408
复制相似问题