Foros del Web » Programando para Internet » Javascript »

pasar array a objeto Collection

Estas en el tema de pasar array a objeto Collection en el foro de Javascript en Foros del Web. Hola, quería saber como se puede pasar un array de javascript a un objeto de tipo collection. He intentado hacer lo siguiente en la jsp: ...
  #1 (permalink)  
Antiguo 23/06/2010, 03:32
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 4 meses
Puntos: 1
pasar array a objeto Collection

Hola, quería saber como se puede pasar un array de javascript a un objeto de tipo collection. He intentado hacer lo siguiente en la jsp:

Código:
...
 <s:hidden name="listadoIdsElementosSeleccionados" />
...
for (i=0; i< longitudModelo; i++)
			{				
				if(idElementoSeleccionado == modelo.elementos[i].idElemento)
				{
					nombreElementoSeleccionado = modelo.elementos[i].nombreCortoElemento;
					for (j=0; j<longitudArray; j++)
					{
						if (arrayElementosSeleccionados[j] == nombreElementoSeleccionado)
						{
							nombreRepetido = "repetido";
							break;
						}
					}
					if(nombreRepetido != "repetido")
					{
						arrayElementosSeleccionados.push(nombreElementoSeleccionado);
						arrayIdsElementosSeleccionados.push(modelo.elementos[i].idElemento);
					}
					break;
				}
			}
			arrayIdsElementosSeleccionados.sort();
...
document.getElementById('listadoIdsElementosSeleccionados').value = arrayIdsElementosSeleccionados;
pero sólo me coge el último número del array. Es decir, si arrayIdsElementosSeleccionados es [2, 5], listadoIdsElementosSeleccionados es [5]. Además, listadoIdsElementosSeleccionados es un objeto de tipo Collection<Long> que tengo en el action. Intento pasarle los valores pero sólo me pasa el último. Alguna idea de porqué lo estoy haciendo mal? No se puede pasar un array a un objeto tipo Collection? Muchas gracias, un saludo
  #2 (permalink)  
Antiguo 24/06/2010, 15:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: pasar array a objeto Collection

la verdad que no estoy entiendiendo bien el tema. si te refieres a Collection como HTMLCollection, no puedes convertir el array a HTMLCollection. mas aun, no es posible crear un HTMLCollection al vuelo como se haria con un objeto o array de javascript. esto porque los HTMLCollection van intimamente ligado con el DOM del documento. he intentado interpretar tu codigo para ver si comprendo lo que intentas hacer pero no soy capaz porque desconozco que representa cada cosa. si expones un poco mas de codigo sin jsp, quizas se te entienda mejor.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 25/06/2010, 00:58
 
Fecha de Ingreso: diciembre-2008
Mensajes: 233
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: pasar array a objeto Collection

Hola, yo tengo un Action, y en el Action un objeto de tipo collection:

Collection<Long> listadoIdsElementosSeleccionados = new ArrayList<Long>();

y en la jsp, tengo un array, con números, tipo: [2, 56, 6897, 3]. Yo quería pasar este array de la jsp (en código javascript) a esa variable "listadoIdsElementosSeleccionados" de tipo Collection del Action, que relacionaba en la jsp como :

<s:hidden name="listadoIdsElementosSeleccionados" />

Al final he solucionado el problema. Por lo que he podido ver, de la jsp al action lo que se pasan son objeto String, no long, de ahí el primer problema. Y por otro lado, tampoco se puede pasar una lista desde código javascript tal y como yo lo quería hacer (o no he hallado el modo). La solución que he encontrado es obtener el array mediante código javascript con lo que necesito, ej : [2, 56, 6897, 3]. Después pasar este array a un string que sólo contenga los números y las comas, ej: 2, 56, 6897, 3. Pasar este string al action (que eso sí es fácil), recogerlo en el action con un objeto tipo String, y luego con un split quitarle las comas y pasarlo a array, y éste array, pasarlo a un objeto tipo Collection<Long>. Lo escribiré más o menos por si a alguien le sirve:

En la jsp:
Código:
...
<s:hidden name="idsElementosString" id="idsElementosString"/>
...
en código javascript:
var idsElementos = document.getElementById('idsElementosString');
...
y obtengo el array en código javascript, metiéndolo en esa variable:
idsElementos.value = arrayIdsElementosSeleccionados;
...
En el action:
Código:
...
	private Collection<Long> listadoIdsElementosLong = new ArrayList<Long>();
	private String idsElementosString;
...

this.setIdsElementosString(idsElementosString);
		String[] listadoIdsElementosString = this.getIdsElementosString().split(",");
		for (int i=0; i < listadoIdsElementosString.length; i++)
		{
			long idLong = Integer.parseInt(listadoIdsElementosString[i]);
			listadoIdsElementosLong.add(idLong);			
		}
		this.setListadoIdsElementosLong(listadoIdsElementosLong);
Espero que le sirva a alguien esta explicación, gracias por responderme.
Un saludo

Etiquetas: collection, objeto, pasar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:26.