entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

alert en jsp

Buenas noches compañeros, me gustaría saber como puedo implementar un alert como en javascript pero que dependa de según un tipo de condición (sin onclick) en jsp, es decir, antes de realizar una compra, por ejemplo, compruebo que el usuario haya sido registrado o logueado, si no lo esta, mandar a la página de login (que es la misma que para registrarse) y sacarle un alert con un mensaje.

He estado investigando pero no he sido capaz de llegar a ninguna conclusión.

¿Alguna idea?

Gracias :)

1 Respuesta

2votos

carlossevi Puntos63580

Depende mucho de tu aplicación y arquitectura, pero al fin y al cabo con jsp lo que haces es generar una página dinámicamente. Lo más simple del mundo es que en la construcción de tu página HTML se genere el siguiente código:

<script>
alert('¡Alerta!');
</script>

Cuando se cargue tu página se mostrará la alerta.

Cuestión a parte es que estés implementando alguna arquitectura de separación por capas (por ejemplo MVC) y meter Javascript en bruto en mitad del HTML no sea una buena práctica.

0voto

Yesod comentado

La aplicación es por capas, el tema es que cuando el usuario va a realizar una compra, comprueba si esta logueado o registrado en su defecto, si es false, entonces redirijo al menú de login para que el usuario elija "login o registrar", pero me gustaría poder implementar un alert o una pop-up (alguna forma) de avisar al usuario lo que sucede con una ventana que no bloquee el navegador.

Estuve mirando por ajax...pero no se si sería buena idea.

0voto

carlossevi comentado

Como te digo, depende mucho de tu aplicación y sin conocerla quizá no te demos los mejores consejos de implementación. Por AJAX lo veo más complicado, tendrías que hacer que el cliente haga una petición para comprobar si debe dar una alerta, con lo que tendrías que preparar algo en el back que sea capaz de dar la respuesta.

Yo veo más sencillo "inyectar" algo de código en la composición de la plantilla (html). Ejemplos:

  • Inyectar directamente el Javascript en html (mi ejemplo anterior)
  • Inyectar algún componente html no visible y que el JS de tu página siempre compruebe al inicio de la ejecución la existencia de ese componente: si el componente existe, se muestra la alerta.

0voto

Yesod comentado

El código es el siguiente (pongo la parte que tiene relevancia)

<%
                for (int x = 0; x<AC.compra.size();x++){
                    String ImagenProducto = AC.compra.get(x).getImagen();
                    String NombreProducto = AC.compra.get(x).getNombre();
                    double PrecioProducto = AC.compra.get(x).getPrecio();
                    out.print(ImagenProducto);
                    out.print(NombreProducto);
                    out.print(PrecioProducto);
                }
                    double total = 0;
                    for (int x = 0; x<AddCarro.compra.size();x++){
                        total += AddCarro.compra.get(x).getPrecio()*AddCarro.compra.get(x).getCantidad();
                    }
                    if (total <= 0){
                        %>
                        <center>
                            <h2><span class="total">EL CARRITO ESTA VACÍO</span></h2><br />
                        </center>
                        <%
                    } else {
                        %>
                        <center>
                            <h2><span class="total">TOTAL: <%=total%></span></h2><br />
                            <%
                            if (!Validacion.acceso.isEmpty()){
                                String DNIUsuario = request.getParameter("usuario");
                                %>
                                    <a href="RealizarCompra?usuario=<%=DNIUsuario%>"><input type="button" value="Comprar" class="aceptar" style="width:200px" /></a>
                                <%
                            } else {
                                %>
                                    <a href="loginweb.jsp?error=Se requiere login antes de continuar con la compra"><input type="button" value="comprar" class="aceptar" style="width:200px" /></a>
                                <%
                            }
                            %>
                        </center>
                        <%
                    }
                %>

Y de aqui, lleva a loginweb.jsp

<div id="contenido">
            <%
                if (Validacion.acceso.isEmpty()){
                    %>
                    <table border="0">
                        <tr>
                            <td>
                                <span>
                                    <%
                                        if(request.getParameter("error") != null){
                                            out.print(request.getParameter("error"));
                                        } else if (request.getParameter("aviso") != null){
                                            out.print(request.getParameter("aviso"));
                                        } else{
                                            out.print("");
                                        }
                                    %>
                                </span>
                            </td>
                        </tr>
                    </table>
                    <div id="login">
                        <div id="apartadologin">
                            <h1><center>Login Web</center></h1>
                            <form action="Autenticacion" method="post">
                                <table border="0">
                                    <tr>
                                        <td>DNI: </td><td><input type="text" name="dni" id="dni" /></td>
                                    </tr>
                                    <tr>
                                        <td>Contaseña: </td><td><input type="password" name="pass" id="pass" /></td>
                                    </tr>
                                </table>
                                <input type="submit" name="Entrar" id="Entrar" />
                            </form>
                        </div>
                        <div id="claveOlvidada">
                            <a href="#" id="CerrarSesion" onclick="mostrar()">¿Olvidaste tu clave?</a>
                            <form action="ForgetPass" method="post" id="feedback" style='display:none;'>
                                <table border="0">
                                    <tr>
                                        <td>DNI: </td><td><input type="text" name="dni" id="dni" /></td>
                                    </tr>
                                    <tr>
                                        <td>Nueva Clave </td><td><input type="text" name="dni" id="Clave Nueva" /></td>
                                    </tr>
                                </table>
                                <input type="submit" name="Enviar" id="Enviar" />
                            </form>
                        </div>
                    </div>
                    <div id="registro">
                        <h1><center>Registro Web</center></h1>
                        <form action="Registro" method="post">
                            <table border="0">
                                <tr>
                                    <td>Nombre de Usuario: </td><td><input type="text" name="nombre" id="nombre" /></td>
                                </tr>
                                <tr>
                                    <td>DNI: </td><td><input type="text" name="dni" id="dni" /></td>
                                </tr>
                                <tr>
                                    <td>Correo electrónico: </td><td><input type="text" name="email" id="email" /></td>
                                </tr>
                                <tr>
                                    <td>Contaseña: </td><td><input type="password" name="pass" id="pass" /></td>
                                </tr>
                            </table>
                            <input type="submit" name="Entrar" id="Entrar" />
                        </form>
                    </div>
                    <%
                } else{
                    response.sendRedirect("menu.jsp");
                }
            %>
        </div>

¿Que se te ocurre?

0voto

carlossevi comentado

En la primera parte no veo la redirección a loginweb.jsp (sólo un enlace), pero suponiendo que se redirija parece claro que el control de si debe o no mostrarse la alerta debería estar en el mismo sitio que se controla si hay un error a mostrar, en el if de request.getParameter("error"). Ahí puedes hacer que se imprima directamente el <script>alert('Mensaje de error');</script>.

0voto

Yesod comentado

<a href="loginweb.jsp?error=Se requiere login antes de continuar con la compra"><input type="button" value="comprar" class="aceptar" style="width:200px" /></a>

Esta en la parte de abajo...es una condición simple para enlaces.

0voto

carlossevi comentado

Ese es el enlace que te decía que había visto, pero no una redirección.

0voto

Yesod comentado

Con eso, ya redireccionas según el if que hay anteriormente

ED: He intentado hacer esto, pero no funciona...no manejo mucho el tema de scripts...

<%
                                        if(request.getParameter("error") != null){
                                            %>
                                            <input type="text" value="<%out.print(request.getParameter("error"));%>" id="valorError"/>
                                            <script type="text/javascript">
                                                var nombre = $("#valorError").val(); 
                                                alert('Mensaje de error'+nombre);
                                            </script>
                                            <%
                                        } else if (request.getParameter("aviso") != null){
                                            out.print(request.getParameter("aviso"));
                                        } else{
                                            out.print("");
                                        }
                                    %>

¿Me puedes echar un cable para resolverlo? Gracias

0voto

carlossevi comentado

¿Ves algún error en la consola del navegador?
En primer lugar prueba a dejar aislado el alert sin variables:

<script type="text/javascript">
    alert('Mensaje de error');
</script>

¿Funciona con eso?

0voto

Yesod comentado

Si, el alert básico si funciona, lo que no que termina de funcionar es cuando trato de concatenar con una variable

0voto

carlossevi comentado

Puede ser porque $("#valorError").val() esté fallando, quizá al hacer uso de jQuery y que la página no esté totalmente cargada. Prueba con:

alert('<%out.print(request.getParameter("error"));%>');

1voto

Yesod comentado

Funciona perfectamente, muchísimas gracias amigo :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta