Listbox en Strust

Me gustaría saber si tienes un ejemplo tanto del JPS como del Beam de como llenar una listbox en Struts, agregando tanto la descripción como el código de una lista de productos.

2 respuestas

Respuesta
1
Como ya sabrás, un listbox se corresponde en HTML con una estructura Select con varias Option dentro de ella. Gracias a Struts podemos generar y rellenar esa Select con un numero variable de objetos con una sintaxis muy reducida.
Dada la clase Producto que comentas:
class Producto{
int codigo;
String descripcion;
// Recuerda que el formato de los metodos debe ser como los siguientes. Si los nombres
// No se escriben así, (minúsculas al principio y nombre del atributo en mayúsculas) Struts
// no los encontrará. Por ello siempre es más fácil generar los metodos automaticamente
// a partir de los atributo con alguna IDE.
// (esto lo hace Eclipse en /Source/Generate getters and setters...)
int getCodigo(){return codigo}
void setCodigo(int codigo){this.codigo=codigo}
String getDescripcion(){return descripcion}
void setDescripcion(String descripcion){this.descripcion=descripcion;}
}
En nuestra action (la que presentará el Jsp) tendremos algo así para mandarle los productos:
Action
Collection productosCol;
// Esto lo conseguimos de donde corresponda. La notación opcional (Java>1.5) nos ayuda a saber que contienen nuestras colecciones.
request.setAttribute("productos", productosCol);
// El nombre del atributo es importante ya que hay que usar el mismo en el jsp.
JSP
Hecha ya toda la preparación, la parte JSP es la más fácil gracias a Struts:
<logic:present name="productos">
<html:select property="codigo">
<html:options collection="productos" property="codigo" labelProperty="descripcion" />
</html:select>
</logic:present>
Observa que aunque podríamos usar varias etiquetas "html:option" con algún bucle sobre la colección, Struts ya ha pensado en ello y ha creado un "html:options" que generará una opción por elemento de la colección.
El "logic:present" nos garantiza que no se pintará el select si no está la colección de productos que le pasamos en el Action (para mayor seguridad aunque opcional)
El property siempre será el atributo de nuestro Bean que queremos que se elija y se pase al mandar el formulario, normalmente será una Id como en tu caso.
Lo que queramos que le aparezca en el Listbox/Combo/Llámalo X al usuario se indica en el "labelProperty".
Espero haberte sido de ayuda. Cualquier aclaración no dudes en preguntar.
Respuesta
1
Tienes que usar las tag libraries
En concreto hay un tag que se llama option... seria algo como
En la parte servidora:
//La lista es un pojo, un bean...
session. Setattribute("BeanDeOpciones", lista)
<select name="nombre">
<options id="BeanDeOpciones">
</select>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas