JSF 2.0 - 用于移动和PC浏览器的两个界面

时间:2010-08-19 09:30:41

标签: java jsp jsf

我正在开发一个需要两个界面的应用程序 - 一个用于手机浏览器,另一个用于普通PC浏览器。第二个界面需要提供更多信息并具有更多功能。当然,它们都在同一个项目中并使用相同的bean等。它只是表示层的变化。目前,我只有手机界面。当我选择地址时可以访问它:// ip-address:8080 / App /但是当我尝试直接进入具有该界面的页面时不可访问://ip-address:8080/App/page.jsp。我收到以下错误:

  

org.apache.jasper.JasperException:An   处理JSP页面时发生异常   第30行的/page.jsp

     

javax.faces.context.FacesContext   context =   javax.faces.context.FacesContext.getCurrentInstance();   30:
  。context.getViewRoot()的setLocale(newLocale);   31:%> 32:33:

     

堆栈跟踪:    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)

     

根本原因

     

显示java.lang.NullPointerException    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.java:260)    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

当然,我的web.xml中的信息是欢迎页面设置为

<welcome-file-list>
    <welcome-file>faces/page.jsp</welcome-file>
</welcome-file-list>

如果我要从web.xml中删除此部分,我能够访问该页面还是与其他内容相关的问题?最后,我希望通过提供这样的链接来达到不同的界面:

// IP地址:8080 /应用/ mobile_page.jsp //ip-address:8080/App/browser_page.jsp

感谢您的任何意见。 最好的祝福, SASS。

2 个答案:

答案 0 :(得分:2)

此异常表示FacesContext#getCurrentInstance()正在返回null。这意味着尚未创建FacesContext。对此负责的是FacesServlet。这反过来意味着根本没有调用FacesServlet

要调用FacesServlet,您需要确保请求网址与url-pattern中定义的FacesServlet的{​​{1}}相匹配。

您似乎已在web.xml上映射了FacesServlet。因此,您需要按http://ip-address:8080/App/faces/page.jsp打开页面,而不是http://ip-address:8080/App/page.jsp

答案 1 :(得分:1)

如果您使用JSF,则不应直接访问JSP页面,而应通过处理程序(faces / *或* .jsf)