Struts y optionsCollection

Raul
24 de Marzo del 2010
Estoy desarrollando una aplicación con Struts y quiero mostrar en un desplegable una lista de objetos que tengo en una BBDD mysql.

Al crear un objeto que se llama unidad, quiero dar la opcion de seleccionar de que unidad depende la que estoy creando.

Tengo una action que me lista todas las unidades y las guardo en la sesión en un arraylist, creo que deberia coger los nombres de cada una de unidades del arraylist pero no se como. Alguno me puede poner un ejemplo o explicarme como se haria esto?

gracias

Cyprax
24 de Marzo del 2010
Hola a todos, nunca he participado en este foro, pero lo consulto frecuentemente!!!

se que ya pasó algo de tiempo para esta respuesta pero acabo de encontrarme con este problema y acabo de encontrar la solución y como casi no encontré nada de esto pues lo posteo para que las personas que busquen esto lo solucionen mas rápido que yo.

explico cada linea:
En el select el property debe ser en tu form un String [] servicioSelect=null, notese que se llama igual

<html:select property="servicioSelect" multiple="true" size="3" styleClass="caja01" >

en el optionsCollection está la propiedad name que debe tener el nombre del objeto Collection(previamente en session) que ya debes traer lleno con tus objetos TO, bean o lo que se te antoje que traiga propiedades, en mi caso es un ArrayList de objetos TO que a su vez tienen las propiedades id_tipo_tramite y tipo_tramite entre otras.
En cuanto a la property="servicios" es un atributo de mi Form que también se debe llamar igual y que debe ser un ArrayList servicios=null; así:

<html:optionsCollection name="arlTiposTramite" property="servicios" value="id_tipo_tramite" label="tipo_tramite"/>
</html:select>


Del lado del Form deberá quedar así:


public class algoForm extends ActionForm{
private String [] servicioSelect = null;
private ArrayList servicios = null;
public String[] getServicioSelect() {
return servicioSelect;
}

public void setServicioSelect(String[] servicioSelect) {
this.servicioSelect = servicioSelect;
}

public Collection getServicios() {
return servicios;
}

public void setServicios(ArrayList servicios) {
this.servicios = servicios;
}
}

Espero que les sirva y mucha suerte!!!!

Marcos Salazar
24 de Marzo del 2010
Hola Cyprax, mil gracias , definitivamente luego de buscar en internet por muchas horas vi tu ejemplo y me sorprende lo sencillo que es pasar una select con multiple = "true". Pero lo implemente distinto:

<html:select property = "obj" multiple="true">
<html:options collection="obj" property="descp"/>
</html:select>

Fíjense que no utilice el optionsCollection. Espero les sirva. Suerte.