Ciao andbin, prima di tutto grazie per la risposta!
Quello che scrivi è esatto. Il codice entra nel blocco catch ma a non funzionare è proprio response.sendRedirect("route.jsp"). Se scrivo questo invece non ho problemi:
@WebServlet(name = "GestioneCoordinate", urlPatterns = "/coordinate.jsp")
public class GestioneCoordinate extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
String Errore = "";
try {
StringBuilder sb = new StringBuilder("");
sb.append("<strong>ERRORE:</strong><br>");
sb.append("Le cause del tuo errore possono essere le seguenti:<br>");
sb.append("1).Non è stato inserito alcun valore; <br>");
sb.append("2).Hai utilizzato la virgola al posto del punto o viceversa;<br>");
sb.append("3).Hai inserito un valore non accettabile ovvero fuori range;<br>");
sb.append("4).La tua marca temporale suggerisce una velocità di percorrenza troppo elevata.<br>");
sb.append("Prova a reinserire i dati di input.<br>");
sb.append("Grazie");
Errore = sb.toString();
}catch(Exception g){
throw new RuntimeException(g);
}
if (session.getAttribute("UserID")!=null){
Double Latitudine = null;
try {
Latitudine = Double.parseDouble(request.getParameter("Latitudine"));
}catch (Exception e){
request.setAttribute("Errore", Errore);
request.getRequestDispatcher("route.jsp").forward(request, response);
}
Come dicevo in precedenza non capisco appunto perché sendRedirect() non funzioni mentre getRequestDispatcher() si. Mi piacerebbe sapere il motivo. Inoltre se uso getRequestDispatcher() l’attributo Errore in “route.jsp” non risulta esistere. Infatti se in route.jsp scrivo:
<%
if (request.getSession().getAttribute("Errore")!=null){
%>
<p class="rosso-porpora"><%= request.getSession().getAttribute("Errore").toString() %></p>
<% } %>
non visualizzo nulla.
getRequestDispatcher() non spedisce il browser a route.jsp ma carica route.jsp nella Servlet infatti l’URL è quello della Servlet.
Usando getRequestDispatcher() in sostanza non riesco ad informare l’utente in merito agli errori che sta commettendo.
Vorrei appunto colorare di rosso il tag input con la stringa sbagliata e mettere un avviso in fondo alla pagina.
Sempre grazie