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