Visualizzazione dei risultati da 1 a 10 su 16

Hybrid View

  1. #1
    Se questo:
    codice:
    <%@ page errorPage="/error.jsp" %>
    gestisce gli errori nella pagina mentre questo nella webapp:
    codice:
    <error-page>
        <location>/WEB-INF/error.jsp</location>
    </error-page>
    è ragionevole usare solo il secondo e omettere il primo, giusto?
    Come faccio a distinguere in error.jsp:
    1) Gli errori http;
    2) Gli altri errori.
    Se uso la variabile code potrei scrivere una cosa di questo tipo:
    codice:
    <%
        // Si cattura la variabile 'code' dall'URL.
        String errore = null;
        boolean httpError = true;
        try{
            errore = request.getParameterValues("code")[0];
        }catch(Exception e){
            httpError = false;
            errore = "";
        }
    %>
    <% if(httpError) {%>
    <h4>Errore <%= errore %></h4>
    <div>
        <img src="/immagini/http-error.jpg" alt="Errore <%= errore %>" class="imgResponsive">
        <p>Si &egrave; verificato il seguente errore http: <b><%= errore %></b></p>
        <p>Puoi ricollegarti alla home del sito <a href="/index.jsp">premendo qui</a>.</p>
    </div>
    <% } else {%>
    <h4>Errore</h4>
    <div>
        <img src="/immagini/webapp-error.jpg" alt="Errore" class="imgResponsive">
        <p>Siamo spiacenti, si &egrave; verificato un errore durante l'esecuzione:</p>
        <p>
            <%@ page isErrorPage="true"%>
            <%@ page import="java.io.StringWriter" %>
            <%@ page import="java.io.PrintWriter" %>
            <i>Messaggio:</i>
        </p>
        <p><strong class="rosso-porpora"><%=exception.getMessage()%></strong></p>
        <p><i>StackTrace:</i></p>
        <p class="grigio-40">
            <%
                StackTraceElement[] elements = Thread.currentThread().getStackTrace();
                for (int i = 0; i < elements.length; i++) {
                    StackTraceElement s = elements[i];
                    out.println(s + ")<br>");
                }
            %>
        </p>
        <p>Puoi ricollegarti alla home del sito <a href="/index.jsp">premendo qui</a>.</p>
    </div>
    <% } %>
    Ma il file web.xml diventerebbe troppo prolisso e non mi piace molto.
    Mi daresti una mano a preparare questo file error.jsp?
    Più pratica in futuro...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Se questo:
    codice:
    <%@ page errorPage="/error.jsp" %>
    gestisce gli errori nella pagina mentre questo nella webapp:
    codice:
    <error-page>
        <location>/WEB-INF/error.jsp</location>
    </error-page>
    è ragionevole usare solo il secondo e omettere il primo, giusto?
    Sì, è possibile avere solo 1 <error-page> con il solo <location> e così gestisci tutti gli errori/eccezioni.

    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Come faccio a distinguere in error.jsp:
    1) Gli errori http;
    2) Gli altri errori.
    PageContext ha un getErrorData() che fornisce un oggetto ErrorData. Se la pagina di errore ha il isErrorPage="true", i dati nel ErrorData sono validi e significativi (altrimenti non sono usabili).
    All'interno del ErrorData ci sono status-code e l'eccezione (e altro, vedi documentazione). Lo status-code c'è sempre, l'eccezione no, può mancare (=null).

    Quindi qualcosa del tipo:

    codice:
    <%@ page isErrorPage="true"  ....altri attributi....  %>
    
    ...
    
    <% if (pageContext.getErrorData().getThrowable() != null) { %>
    
       ... errore per eccezione ...
    
    <% } else { %>
    
       ... errore per status-code ...
    
    <% } %>
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.