Multibox y valores

Pablo
06 de Febrero del 2006
Hola, saludos a todos los creadores de este grupo.
Tengo un pequeño problemas con una aplicación que estoy realizando con struts y me gustaría ver si podéis echarme una mano.

Necesito generar una jsp con una lista dinámica de checkbox y recoger los valores desde una iteracion de una collection puesta en sesión.
Me explico:

En el action A.java tengo una collecion de objetos la cual pongo en sesión. Desde la página jsp B.jsp itero esta lista y saco tres propiedades, Nombre, Descripcion y Grupo. Por cada registro creo un checkbox:

B.jsp

<logic:iterate id="itero" name="Destinos De Tarea">
<tr>
<td>
<bean:write name="itero" property="nombre"/>
</td>
<td>
<bean:write name="itero" property="descripcion"/>
</td>
<td>
<html:multibox property="selectedBanks">
<bean:write name="itero" property="grupo"/>
</html:multibox>
</td>
</tr>
</logic:iterate>

Pretendo que cada check recoga un valor de grupo, para pasarlo a un nuevo action C.java dependiendo de si el check esta señalado o no.

El código del Action form que tengo detrás de la jsp cpn los checks es:

package com.redinvisible.mailing.datosform;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;


public class CheckForm extends ActionForm{


private String[] selectedBanks;

public void reset(ActionMapping arg0, HttpServletRequest arg1) {
selectedBanks = new String[0];

}


public String[] getSelectedBanks() {
return selectedBanks;
}

public void setSelectedBanks(String[] selectedBanks) {
this.selectedBanks = selectedBanks;
}

}

El problema me salta cuando intento recuperar los valores de los checks desde el action. Me da un java.lang.nullPointer Exception, por lo que creo que no se están recogiendo en el ActionForm los valores del check.
Muchas gracias

Rascayu
06 de Febrero del 2006
No te he entendido muy bien pero voy a escribir mi código para operar sobre mis campos multibox. Creo un Bean correspondiente para "cargar" los datos que luego voy a mostrar en la página jsp. Suponemos un campo llamado Medios que tiene su Bean correspondiente:

public void setMedios(String[] medios){
this.medios = medios;
}

public String[] getMedios(){
return medios;
}


Preparamos los datos que queremos presentar en la página jsp, por ejemplo, en la clase Action:

datos.setMedios(ComoLoHagasTu);
session.setAttribute("datos",datos);

Así, en la página jsp puedo mostrar un campo multibox que contiene cada uno de los medios:

Seleccione su medio:
<logic:iterate id="item" name="datos" property="medios">
<tr>
<td><html:multibox property="medios"><bean:write name="item"/>
</html:multibox><bean:write name="item"/>
</td>
</tr>
</logic:iterate>


En mi caso, mi Form tiene otra propiedad igual llamada Medios. Vamos, que el código es:

public void setMedios(String[] medios){
this.medios = medios;
}

public String[] getMedios(){
return medios;
}


y así en mi Clase Action puedo recoger los valores seleccionados:

String[] selectmultiple = miForm.getMedios();

Espero que te sirva de algo.