2010-08-19 5 views
1

Je développe une application qui nécessite deux interfaces: une pour les navigateurs de téléphones portables et une autre pour les navigateurs PC classiques. La deuxième interface doit présenter plus d'informations et avoir quelques fonctions supplémentaires. bien sûr, les deux sont dans le même projet et utilisent les mêmes haricots, etc. C'est juste la couche de présentation qui change. Pour le moment, j'ai juste l'interface pour les téléphones mobiles. Il est accessible quand je choisis l'adresse: // ip-address: 8080/App/mais pas quand j'essaye d'aller directement à la page avec cette interface: //ip-address:8080/App/page.jsp. Je suis l'erreur suivante:JSF 2.0 - Deux interfaces pour les navigateurs mobiles et 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)

Bien sûr, j'ai les informations contenues dans mon web.xml que la page d'accueil est définie sur

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

si je devais retirer cette partie de la web.xml serais-je en mesure d'atteindre cette page ou le problème est-il lié à autre chose? En fin de compte, je voudrais atteindre les différentes interfaces en fournissant des liens comme celui-ci:

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

Merci pour toute contribution. Meilleures salutations, sass.

Répondre

2

Cette exception est dit que le FacesContext#getCurrentInstance() est de retour null. Cela signifie que le FacesContext n'a pas été créé. Celui qui en est responsable est le FacesServlet. Cela signifie que le FacesServlet n'a pas été appelé du tout.

Pour appeler le FacesServlet vous devez vous assurer que l'URL de la requête correspond à la url-pattern du FacesServlet comme definied dans le web.xml. Vous semblez avoir mappé le FacesServlet sur /faces/*. Donc, vous devez ouvrir la page par http://ip-address:8080/App/faces/page.jsp et donc pas par http://ip-address:8080/App/page.jsp.

+0

Merci, BalusC - réponse très utile :) – sass

+0

De rien. – BalusC

1

Si vous utilisez JSF vous ne devriez pas aller directement aux pages JSP, mais par le gestionnaire (faces/* ou * .jsf)

+0

Je ne vois pas vraiment comment cela répond à ma question. Est-ce que vous parlez: Faces Servlet /faces/* Mais la Le problème est que je ne peux plus accéder directement à cette page. – sass

Questions connexes