Java => Javascript

Ahora mi consulta es como puedo pasar/copiar un array bidimensional que tengo en Java a otro array en Javascript.

1 respuesta

Respuesta
1
Las páginas Html (En las cuales viaja el código Javascript) son "casi estáticas" y se envían tal cual al cliente.
Para copiar de java a javascript, ambos objetos deben estar en el cliente.
Estando así la estructura lo mejor es que la información la recoja javascript de java.
Para realizar esto deberías crear un método en la clase java que te interese que devuelva los datos. Desde javascript no tienes más que llamar al método creado e ir colocando los datos en tu array de javascript.
Yo lo estoy intentando emplear en una página JSP, la cual accede a una base de datos y recoge los datos en un array bidimensional, con lo cual no es una clase la que recoge los datos, simplemente es un array que contiene esos datos. Y quiero pasar esos datos a un array en javascript para poder utilizar los eventos de javascript. ¿Se te ocurre alguna manera de conseguir esto?
¡ Ha Bueno !
Entonces la solución es más simple.
La página Jsp crea una página Html (con su javascript, si es que tiene), así que no tienes más que crear el javascript de la misma forma que creas la página Html:
...
<script language="JavaScript">
function ejemplo() {
vaiable = "<%= variableJava %>";
...
}
</script>
De esta forma crea el Javascript de una forma directa desde las variables Java.
Gracias, esa es una buena idea. La cuestión es que yo estoy utilizando un array y entonces se hace más complicado.
Tengo esta función de Javascript:
function rellenarCombo(var i)
{
}
En la que i es un subíndice del array bidimensional que utilizo en java, pero claro, los tengo en java y no en javascript. Había pensado en pasar el array a javascript con todos los datos según me habías dicho tu pero ahí llega otro inconveniente, que los indices de los bucles en javascript no lo coge java, y viceversa, no se si me he explicado.He tratado de hacer esto:
for(i=0;i<Array.length;i++)
{
for(j=0;j++<Array[].length;j++)
{
Array[j]/*Javascript*/=<%=Array[j]%>/*Java*/
}
}
Y eso creo que no se puede ¿verdad? ¿Se te ocurre alguna alternativa?
Gracias
Que te parece crear en la página Jsp:
...
<% // Lineas Java %>
<!-- Lineas Html -->
<Script Languaje="Javascript">
...
<% //Esto es Java
for(i=0;i<Array.length;i++)
{
for(j=0;j++<Array[].length;j++)
{
%>
Array[<%= i %>][<%= j %>]=<%=Array[j]%>;
<%
}
}
%>
...
</Script>
Con lo que se genera un código de la forma:
Array[0][0]=1;
Array[0][1]=2;
Array[0][2]=3;
Array[1][0]=4;
Array[1][1]=5;
Array[1][2]=6;
...
A ver si así...
He probado a copiar el array completo algo como:
Array=<%=Array%>
Pero me da un error al coger el valor de un combo que esta por encima y pasárselo a la función es al go así
onClick="funcion(combo.value)"
¿Cómo puedo tomar ese valor?
Para coger valores de objetos select, se realiza así:
combo.options[combo.selectedIndex].value
Del objeto "select" recoges el objeto "option" seleccionado y de éste último su valor.
La solución que me diste al problema del array ha funcionado perfectamente, pero al llamar a la función en el select me da un error de depuración, y me dice que se esperaba un objeto (donde he puesto asteriscos) que es la la linea anterior a la del select, pero si quito el evento onChange no me da ese error:
<div id="Fecha"><b><font face="Arial, Helvetica, sans-serif" size="3" color="#E1512D">Fecha:</font> (********)
<select name="comboFecha" size="1" onChange="RellenarComboHoras(Reserva.comboFecha);">
<option value="0">Seleccione fecha:</option>
<option value="2002-10-16">Miercoles, 16 de Octubre de 2002</option>
<option value="2002-10-17">Jueves, 17 de Octubre de 2002</option>
<option value="2002-10-18">Viernes, 18 de Octubre de 2002</option>
</select>
</b></div>
<p></p>
<div id="horas"><b><font face="Arial, Helvetica, sans-serif" size="3" color="#E1512D">Hora:</font>
<script language="Javascript">
function RellenarComboHoras(obj)
{
var i;
var MAX_Horas;
var horas[3][4];
horas[0][0]=2002-10-16;
horas[0][1]=17:00:00;
horas[0][2]=;
horas[0][3]=;
horas[1][0]=2002-10-17;
horas[1][1]=17:00:00;
horas[1][2]=20:00:00;
horas[1][3]=23:30:00;
horas[2][0]=2002-10-18;
horas[2][1]=17:00:00;
horas[2][2]=;
horas[2][3]=;
MAX_Horas=4;
Ocultar();
for (i=0;i<MAX_Horas;i++)
{
<!-- document.write("<option>"+horas[hora]%>+"</option>");-->
}
Ver();
}
</script>
<select name="comboHora" size="1" >
<option value="0">Seleccione hora:</option>
</select>
</b></div>
Y no se que de donde se saca ese error.
Muchas Gracias.
En general veo varios problemas:
1.- Forma de pasar el argumento a la función, mejor:
onChange="RellenarComboHoras(me);">
2.- Inicialización del array de javascript:
var horas = new array[3];
for (i=0; i<3; i++) {
horas = new array(4);
}
3.- La asignacion de datos al array debe ser en string:
horas[0][1]='17:00:00';
horas[0][2]='';
Prueba con eso, a ver.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas