Cargar combo jsp desde colección datos
Mil perdones, por error, estoy creo repitiendo la pregunta, debo de haber dado enter, y envíe la pregunta sin terminar.
Con tinuo, te decía que tengo una aplicación que da de altas alumnos a través de un form en jsp, pasa los datos validando un actionform,
No he logrado cargar el nombre de las familias en un combo, pues hay niños que son hermanos, por cuanto quiero relacionarlos a través de su flia, para luego diferenciar al momento del cobro de cuotas,
Por tanto cuando acceda a la página de cargar datos, que estén cargadosen un combo los nombres de las familias, éstas tienen un bean relacionado.
Desde una página de menu, con un botón de un form, llama a un action (solo action, sin actionform dependiente) el cual, recupera desde la base de datos el listado de las "Familias" y si el listado tiene datos, con un forward le paso el Vector con Familias, para que cargue el combo,
para hacer pruebas y no tener toda la estructura de la jsp con todos los datos de los niños, utilice para probar una página que intenta cargar el combo con los datos de la familia, (si logro esto, después agregare el código en la página con todos los datos que requiero),
espero se haya entendido la idea, ahora voy a agregar el código relacionado, para que puedas visualizar mejor, estoy utilizando netbeans 6.5.1, con server jboss 5.0.1.GA, con struts
En la página de menu, utilizo este código
"<form name="form1" method="post" action="CargarIdFamilias.do">
<input type="submit" name="Submit" value="Ingreso de Niños">
</form> "
En struts config, para el action:
"<action path="/CargarIdFamilias"
scope="request"
type="com.myapp.struts.src.controlador.Actions.CargarIdFamilias">
<forward name="listadoFamilias" path="/CargarCombo.jsp"/>
</action>"
El metodo execute del action para cargar el vector con las familias, pasandolo como atributo de request (¿ES correcto? ¿O requiere session?)
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
try {
logica = LogicaKombis.getInstance();// singleton de la logica del sistema
Vector<Familias> vec = logica.listarFamilias();
request.setAttribute("NN", vec);
return af = mapping.findForward("listadoFamilias");
} catch (PersistenciaException ex) {
errors.add("PersistenciaException", new ActionMessage("" + ex.getMessage()));
//se envia la coleccion errors a la pagina q los intercepta
request.setAttribute("errores", errors);
return af = mapping.findForward("error");
} catch (FamiliaException ex) {
errors.add("FamiliaException", new ActionMessage("" + ex.getMessage()));
//se envia la coleccion errors a la pagina q los intercepta
request.setAttribute("errores", errors);
return af = mapping.findForward("error");
}
}
La lógica del sistema, utiliza el patrón singleton, luego el método listar familias, obtiene un vector con las familias cargadas en el sistema, obteniendo los datos desde mysql, eso funciona, ya esta probado con junit correctamente
----------------------------------
El bean de los objetos del vector, las Familias:
"
package com.myapp.struts.src.logica;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "familias")
@NamedQueries({@NamedQuery(name = "Familias.findAll", query = "SELECT f FROM Familias1 f"),
@NamedQuery(name = "Familias.findByIdFamilia", query = "SELECT f FROM " +
"Familias f WHERE f.idFamilia = :idFamilia"),
@NamedQuery(name = "Familias.findByNombre", query = "SELECT f FROM " +
"Familias f WHERE f.nombre = :nombre")})
public class Familias implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idFamilia")
private Integer idFamilia;
@Column(name = "Nombre")
private String nombre;
@OneToMany(mappedBy = "idFamilia")
private Collection<Alumnos> alumnos1Collection;
/**
* constructor vacio
*/
public Familias() {
}
/**
* constructor unicamente con idFamilia
* @param idFamilia
*/
public Familias(Integer idFamilia) {
this.idFamilia = idFamilia;
}
/**
* constructor con nombre de familia, utilizado para ingresar familias en bd
* @param nombre
*/
public Familias(String nombre) {
this.nombre = nombre;
}
/**
* constructor con todos los parametros, utilizado para recuperar
* objetos Familias desde la bd
* @param idFamilia
* @param nombre
*/
public Familias(int idFamilia, String nombre) {
this.idFamilia=idFamilia;
this.nombre=nombre;
}
public Integer getIdFamilia() {
return idFamilia;
}
public void setIdFamilia(Integer idFamilia) {
this.idFamilia = idFamilia;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Collection<Alumnos> getAlumnos1Collection() {
return alumnos1Collection;
}
public void setAlumnos1Collection(Collection<Alumnos> alumnos1Collection) {
this.alumnos1Collection = alumnos1Collection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (idFamilia != null ? IdFamilia.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Familias)) {
return false;
}
Familias other = (Familias) object;
if ((this.idFamilia == null && other.idFamilia != null) || (this.idFamilia != null && !this.idFamilia.equals(other.idFamilia))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.myapp.struts.src.logica.Familias1[idFamilia=" + idFamilia + "]";
...
Con tinuo, te decía que tengo una aplicación que da de altas alumnos a través de un form en jsp, pasa los datos validando un actionform,
No he logrado cargar el nombre de las familias en un combo, pues hay niños que son hermanos, por cuanto quiero relacionarlos a través de su flia, para luego diferenciar al momento del cobro de cuotas,
Por tanto cuando acceda a la página de cargar datos, que estén cargadosen un combo los nombres de las familias, éstas tienen un bean relacionado.
Desde una página de menu, con un botón de un form, llama a un action (solo action, sin actionform dependiente) el cual, recupera desde la base de datos el listado de las "Familias" y si el listado tiene datos, con un forward le paso el Vector con Familias, para que cargue el combo,
para hacer pruebas y no tener toda la estructura de la jsp con todos los datos de los niños, utilice para probar una página que intenta cargar el combo con los datos de la familia, (si logro esto, después agregare el código en la página con todos los datos que requiero),
espero se haya entendido la idea, ahora voy a agregar el código relacionado, para que puedas visualizar mejor, estoy utilizando netbeans 6.5.1, con server jboss 5.0.1.GA, con struts
En la página de menu, utilizo este código
"<form name="form1" method="post" action="CargarIdFamilias.do">
<input type="submit" name="Submit" value="Ingreso de Niños">
</form> "
En struts config, para el action:
"<action path="/CargarIdFamilias"
scope="request"
type="com.myapp.struts.src.controlador.Actions.CargarIdFamilias">
<forward name="listadoFamilias" path="/CargarCombo.jsp"/>
</action>"
El metodo execute del action para cargar el vector con las familias, pasandolo como atributo de request (¿ES correcto? ¿O requiere session?)
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
try {
logica = LogicaKombis.getInstance();// singleton de la logica del sistema
Vector<Familias> vec = logica.listarFamilias();
request.setAttribute("NN", vec);
return af = mapping.findForward("listadoFamilias");
} catch (PersistenciaException ex) {
errors.add("PersistenciaException", new ActionMessage("" + ex.getMessage()));
//se envia la coleccion errors a la pagina q los intercepta
request.setAttribute("errores", errors);
return af = mapping.findForward("error");
} catch (FamiliaException ex) {
errors.add("FamiliaException", new ActionMessage("" + ex.getMessage()));
//se envia la coleccion errors a la pagina q los intercepta
request.setAttribute("errores", errors);
return af = mapping.findForward("error");
}
}
La lógica del sistema, utiliza el patrón singleton, luego el método listar familias, obtiene un vector con las familias cargadas en el sistema, obteniendo los datos desde mysql, eso funciona, ya esta probado con junit correctamente
----------------------------------
El bean de los objetos del vector, las Familias:
"
package com.myapp.struts.src.logica;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "familias")
@NamedQueries({@NamedQuery(name = "Familias.findAll", query = "SELECT f FROM Familias1 f"),
@NamedQuery(name = "Familias.findByIdFamilia", query = "SELECT f FROM " +
"Familias f WHERE f.idFamilia = :idFamilia"),
@NamedQuery(name = "Familias.findByNombre", query = "SELECT f FROM " +
"Familias f WHERE f.nombre = :nombre")})
public class Familias implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idFamilia")
private Integer idFamilia;
@Column(name = "Nombre")
private String nombre;
@OneToMany(mappedBy = "idFamilia")
private Collection<Alumnos> alumnos1Collection;
/**
* constructor vacio
*/
public Familias() {
}
/**
* constructor unicamente con idFamilia
* @param idFamilia
*/
public Familias(Integer idFamilia) {
this.idFamilia = idFamilia;
}
/**
* constructor con nombre de familia, utilizado para ingresar familias en bd
* @param nombre
*/
public Familias(String nombre) {
this.nombre = nombre;
}
/**
* constructor con todos los parametros, utilizado para recuperar
* objetos Familias desde la bd
* @param idFamilia
* @param nombre
*/
public Familias(int idFamilia, String nombre) {
this.idFamilia=idFamilia;
this.nombre=nombre;
}
public Integer getIdFamilia() {
return idFamilia;
}
public void setIdFamilia(Integer idFamilia) {
this.idFamilia = idFamilia;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Collection<Alumnos> getAlumnos1Collection() {
return alumnos1Collection;
}
public void setAlumnos1Collection(Collection<Alumnos> alumnos1Collection) {
this.alumnos1Collection = alumnos1Collection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (idFamilia != null ? IdFamilia.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Familias)) {
return false;
}
Familias other = (Familias) object;
if ((this.idFamilia == null && other.idFamilia != null) || (this.idFamilia != null && !this.idFamilia.equals(other.idFamilia))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.myapp.struts.src.logica.Familias1[idFamilia=" + idFamilia + "]";
...
1 respuesta
Respuesta de Rafael Gutiérrez Martínez
-1