La Web del Programador: Comunidad de Programadores
 
    Pregunta:  57439 - BEAN DENTRO DE UN BEAN
Autor:  Angel Manuel Garcia Esteban
Hola:

Estoy haciendo una aplicacion con struts, y en ella tengo un bean que contiene una lista y otro bean mas pequeño. Algo asi:

public class beanCert extends ActionForm{
List listado=new ArrayList();
beanCont bCont=null;
String nombre=null;
String ape1=null;
String ape2=null;
}

public class beanCont extends ActionForm{

String nombreEmpresa;
String direccion;
int anno;
}

Cada bean tiene sus metodos get y set para cada atributo o propiedad.
Ademas el beanCont representa los diferentes trabajos que una misma persona ha podido ir realizando a lo largo de su vida, por lo que, como pueden ser varios, tengo que almacenarlos en una lista, vector etc.
Mi problema es que los datos del beanCert (el de la persona) si me los respeta cuando trabajo con sesiones, pero cuando intento añadir un nuevo trabajo, solo me aparece el primero (que he metido a capon en construtor del beanCont)
¿POrque? ¿Que estoy haciendo mal?

Gracias

  Respuesta:  Dani CJ
Buenas, la forma correcta de hacer las clases es poniendo las variables como privadas y sin inicializar.
Es decir, asi:

public class BeanCert extends ActionForm {
private List listado;
private BeanCont bCont;
private String nombre;
private String ape1;
private String ape2;

public List getListado() {
return listado;
}

public void setListado(List listado) {
this.listado = listado;
}

public BeanCont getbCont() {
return bCont;
}

public void setbCont(BeanCont bCont) {
this.bCont = bCont;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApe1() {
return ape1;
}

public void setApe1(String ape1) {
this.ape1 = ape1;
}

public String getApe2() {
return ape2;
}

public void setApe2(String ape2) {
this.ape2 = ape2;
}
}



La otra clase sería:


public class BeanCont extends ActionForm {

private String nombreEmpresa;
private String direccion;
private int anno;

public String getNombreEmpresa() {
return nombreEmpresa;
}
public void setNombreEmpresa(String nombreEmpresa) {
this.nombreEmpresa = nombreEmpresa;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public int getAnno() {
return anno;
}
public void setAnno(int anno) {
this.anno = anno;
}
}



Y el error que te ocurre cuando rellenas la lista no sé exactamente por qué te ocurriá, pero la forma de hacerlo es esta:

BeanCert beanCert = new BeanCert();
List<String> listado = new ArrayList<String>();
listado.add("una cosa");
listado.add("otra cosa");
listado.add("otra mas");
beanCert.setListado(listado);


Un saludo