Bonjour,
Voilà mon problème.
Nous avons une Formulaire pageA.jsp.
L'utilisateur le valide.
S'en suit une action.
Cette Action génère une Exception.
J'aimerais lorsque c'est la cas, recharger pageA.jsp et afficher le libellé de l'exeption dans une fenêtre d'alert.
On a donc commencer par redefinir le jsfServlet
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 public class MyJsfServlet extends HttpServlet { private FacesServlet delegate; private static String CLE_PAGE_COURANTE = "class org.apache.myfaces.renderkit.html.util.JavascriptUtils.OLD_VIEW_ID"; public void init(ServletConfig servletConfig) throws ServletException { delegate = new FacesServlet(); delegate.init(servletConfig); errorPage = servletConfig.getInitParameter(INIT_PARAM_ERROR_PAGE); } public void destroy() { delegate.destroy(); } public ServletConfig getServletConfig() { return delegate.getServletConfig(); } public String getServletInfo() { return delegate.getServletInfo(); } public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { try { delegate.service(request, response); } catch (Throwable e) { String pageCourante = request.getAttribute(CLE_PAGE_COURANTE).toString(); Throwable ee = ((ServletException) e).getRootCause(); StackTraceElement[] stackTraceElements = ee.getStackTrace(); request.setAttribute("exceptionGeneree", stackTraceElements); request.getRequestDispatcher("/faces"+pageCourante).forward(request, response); } }
on a essayer cela mais vu que l'on ne change pas le request et que delegate.service() sera rappeler, l'erreur sera ainsi regénérée et on boucle infiniment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6<!-- SERVLET JSF --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>fr.JsfServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
Ainsi quelqu'un aurait il une solution pour pouvoir recharger la jsp incorrecte avec un request ayant de nouveaux paramètres.
merci
Partager