【问题标题】:JSF 2.0 - Two interfaces for mobile and PC browsersJSF 2.0 - 移动和 PC 浏览器的两个界面
【发布时间】:2010-08-19 09:30:41
【问题描述】:

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

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

javax.faces.context.FacesContext 上下文 = 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-address:8080/App/mobile_page.jsp //ip-address:8080/App/browser_page.jsp

感谢您的任何意见。 此致, 粗鲁。

【问题讨论】:

    标签: java jsp jsf


    【解决方案1】:

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

    要调用FacesServlet,您需要确保请求URL 与FacesServleturl-pattern 匹配,如web.xml 中定义的那样。

    您似乎已将FacesServlet 映射到/faces/*。因此,您需要通过http://ip-address:8080/App/faces/page.jsp 打开页面,而不是通过http://ip-address:8080/App/page.jsp

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我真的不明白这如何回答我的问题。这是你在说什么: Faces Servlet/faces/* 但是问题是不是我不能直接进入那个页面了。
      猜你喜欢
      • 2015-09-20
      • 2011-12-28
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多