2012-04-21 286 views
5

Soy nuevo en el desarrollo web. Tengo un archivo JavaScript externo que tiene una función para mostrar un mensaje con los detalles del error. Necesito pasar el mensaje de error a la función. He escrito el controlador en servlet.Cómo llamar a la función de JavaScript desde el servlet

Cómo llamar la función de ese archivo JavaScript desde mi servlet.

+0

Su pregunta no tiene sentido. JavaScript se ejecuta en el navegador del usuario. Un servlet se ejecuta en el servidor. Repensa lo que realmente quieres hacer. –

+1

@JBNizet Creo que podemos llamar a JS desde servlet. Podemos enviar respuesta al navegador y en eso mismo podemos crear un script para ser llamado. – Ved

Respuesta

5

No es posible llamar a una función de script java desde un servlet. Más bien, se puede imprimir el código Javascript usando

response.getOutputStream().println("[javascript code]");

en el navegador y luego la función JavaScript sean ejecutados en el navegador.

+0

esto no funciona para mí :(simplemente imprime el script java en el navegador claramente, y no ocurre ninguna exvercución de este código. Ayuda esto. Esto es lo que estoy haciendo, \t response.getOutputStream(). Println ("var ps = document.getElementsByClassName (\" mensajes \ ");" \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t + "ps.innerHtm = \ "DONE \" "; –

+0

Tiene que usar la etiqueta de secuencia de comandos junto con el código del script de Java como response.getOutputStream(). println (" "); –

2

Puede lograr un comportamiento similar mediante el siguiente método. Al enviar la respuesta, puede proporcionar eventos JS.

PrintWriter out = response.getWriter(); 
out.println("<tr><td><input type='button' name='Button' value='Search' onclick=\"searchRecord('"+ argument + "');\"></td></tr>"); 

Al hacer clic en el botón Buscar, se llamará al método de búsqueda de JS.

1

Debe comprender que un servlet se ejecuta en el servidor web, no en el navegador web y que JS se ejecuta en el navegador web, no en el servidor web. La práctica habitual es permitir que el servlet reenvíe la solicitud a un archivo JSP que, a su vez, produce el código HTML/CSS/JS que el servidor web envía al navegador web. En última instancia, todo ese código HTML/CSS/JS se ejecuta en el navegador web.

Para lograr su requisito funcional (un tanto extraño, tbh), solo deje que el JSP reenviado represente condicionalmente la llamada de script determinada. Por ejemplo como sigue con JSTL<c:if>, suponiendo que usted ha recogido y fijar los errores como ${errors} en formato de matriz JSON:

<c:if test="${not empty errors}"> 
    <script>displayErrors(errors);</script> 
</c:if> 

O dejar JSP asignarlo como una variable JS JS y dejar que lo manejan más. Algo así como:

<script> 
    var errors = ${errors}; 

    if (errors.length) { 
     displayErrors(errors); 
    } 
</script> 

En cuanto al requisito de ser extraño, si uno se ve obligado a utilizar JS para mostrar mensajes, que sólo puede significar que usted está usando un alert() o algo así. Esto es muy de los 90 y no es fácil de usar. Simplemente deje que JSP produzca el HTML en consecuencia que se colocan al lado de los campos de entrada, o en una lista en la parte superior del formulario. Our servlets wiki page tiene un ejemplo de hello world que hace exactamente eso.

Cuestiones relacionadas