2011-11-25 22 views
18

Ello no,Asignar JavaScript variable en variable de Java en JSP

estoy tratando de asignar el valor de una variable de JavaScript a una variable de Java. Pero no tengo idea de cómo hacer esto? Digamos por ejemplo, tengo esto:

<html> 
<head> 
    <script type="text/javascript"> 
     function return variable(){ 
      var a = "hello"; 
      return a; 
     } 
    </script> 
</head> 
<body> 

<% 
    //The java code 
    String b = //how do I get that javascript variable here? 
%> 

</body> 
</html> 
+3

Si entiende cómo funciona jsp, sabrá que la parte java se ejecuta en el lado del servidor 'antes' de que la página se muestre en el navegador. Esto significa que ya se ejecutó en el momento en que cualquier javascript tenga alguna posibilidad de ejecución. Entonces debes reconsiderar lo que estás tratando de hacer aquí. –

+0

Posible duplicado: http://stackoverflow.com/questions/1944330/assigning-values-from-javascript-to-java-variable –

+0

posible duplicado de [¿Cómo paso los valores de JavaScript a Scriptlet en JSP?] (Http://stackoverflow.com/questions/5701031/how-do-i-pass-javascript-values-to-scriptlet-in-jsp) – cHao

Respuesta

17

La secuencia de comandos Java se reproduce en el navegador donde el código Java es del lado del servidor, por lo que no puede simplemente hacer esto.

Lo que puede hacer es enviar la variable calculada a partir de javascript para servidor en forma de presentación, o mediante el parámetro URL o mediante llamadas AJAX y entonces usted puede hacer que esté disponible en el servidor

HTML

<input type="hidden" id="hiddenField"/> 

asegurarse de que estas casillas se pone bajo <form>

Javascript

document.getElementById("hiddenField").value=yourCalculatedVariable; 

en el servidor que se obtendría esto como una parte de request

+0

Hmm Ya veo ... Porque en general, lo que estoy tratando de hacer. Tiene un formulario HTML en el JSP, y con un evento onClick desencadena el método javascript que luego devuelve una variable. Entonces esa variable puede enviarse con el resto de los valores de entrada del formulario ... ¿Así que no hay manera de hacer esto? – Tiwaz89

+0

Puede configurarlo en algunos campos ocultos y luego puede enviarlo a través de la sumisión del formulario. –

+0

Algo como esto: ? – Tiwaz89

0

Creo que no hay manera de hacerlo, a menos que se pasa el valor de la variable de JavaScript en la URL, pero es una solución fea.

1

Es necesario leer algo acerca del ciclo de vida de una página JSP. Pruebe esto: http://en.wikipedia.org/wiki/File:JSPLife.png

JavaScript se ejecuta en el cliente, pero para cambiar el jsp, necesita acceder al servidor. Esto puede hacerse a través de Ajax (http://en.wikipedia.org/wiki/Ajax_%28programming%29).

Éstos son algunos enlaces relacionados con el Ajax: http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

0

que no puede hacerlo .. porque JSP se compila y se convierte en el lado del servidor HTML mientras que JavaScript se ejecuta en el lado del cliente. puede establecer el valor en un elemento html oculto y enviarlo a servlet en solicitud en caso de que desee utilizarlo para más

+0

Ah, eso es perfecto, puedo hacerlo, todavía resuelve mi problema de esa manera. Así que simplemente estableceré el valor en el tipo de entrada oculta como esta: ? – Tiwaz89

+0

, sí, tiene razón, debe establecer el valor de este elemento en el método en sí y mantener ese elemento dentro del formulario para que se agregue en la url cuando se envíe el formulario. –

0

Como JavaScript es del lado del cliente y JSP es del lado del servidor.

Entonces Javascript no se ejecuta hasta que llega al navegador, Pero Java se ejecuta en el servidor. Entonces, Java no conoce el valor de la variable de JavaScript.

Sin embargo, usted asigna el valor de la variable de Java a la variable de JavaScript.

1

La respuesta es Usted no puede. Java (en su caso JSP) es un lenguaje de scripting del lado del servidor, lo que significa que se compila y ejecuta antes de todo el código de javascript. Puede asignar variables de JavaScript a las variables JSP, pero no al revés. Si es posible, puede hacer que la variable aparezca en una QueryString o pasarla a través de un formulario (a través de un campo oculto), publicarlo y extraer la variable a través de JSP de esa manera. Pero esto requeriría volver a enviar la página.

Espero que esto ayude.

1

JavaScript se activa en el lado del cliente y JSP está en el lado del servidor. Entonces puedo decir que es imposible.