2010-08-19 128 views
1

我正在開發一個需要兩個界面的應用程序 - 一個用於手機瀏覽器,另一個用於普通PC瀏覽器。第二個界面需要提供更多的信息並且有更多的功能。當然,他們都在同一個項目中,並使用相同的bean等等。它只是變化的表示層。目前,我只有手機界面。當我選擇address:// ip-address:8080/App /時,它是可訪問的,但是當我嘗試直接進入帶有該接口的頁面時://ip-address:8080/App/page.jsp。我得到了以下錯誤:JSF 2.0 - 用於手機和PC瀏覽器的兩個界面

org.apache.jasper.JasperException: An exception occurred processing JSP page /page.jsp at line 30

javax.faces.context.FacesContext context = javax.faces.context.FacesContext.getCurrentInstance(); 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)

root cause

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)

當然,我有一個歡迎頁面設置爲

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

如果我是從web.xml中刪除這部分在我的web.xml中的信息我是否可以訪問該頁面或與其他內容相關的問題?最後,我想通過提供這樣的鏈接,達到不同的接口:

//ip-address:8080/App/mobile_page.jsp //ip-address:8080/App/browser_page.jsp

感謝您的任何意見。 最好的問候, sass。

回答

2

此異常告訴了FacesContext#getCurrentInstance()將返回null。這意味着FacesContext尚未創建。負責的人是FacesServlet。這又意味着FacesServlet根本沒有被調用。

要調用FacesServlet你需要確保請求URL匹配的FacesServleturl-pattern作爲web.xml definied。

您似乎已在/faces/*上映射了FacesServlet。因此,您需要打開http://ip-address:8080/App/faces/page.jsp的頁面,因此不需要http://ip-address:8080/App/page.jsp

+0

謝謝,BalusC - 非常有幫助的答案:) – sass 2010-08-19 12:27:54

+0

不客氣。 – BalusC 2010-08-19 12:42:35

1

如果使用JSF你不應該直接去JSP頁面,但通過處理器(面/ *或* .jsf)

+0

我真的不明白怎麼回答我的問題。這就是你所談論的: 面臨的Servlet /面/ * 但問題是我無法直接進入該頁面。 – sass 2010-08-19 10:55:26