Foros del Web » Programación para mayores de 30 ;) » Java »

como cargar el atributo list de un select con Struts2

Estas en el tema de como cargar el atributo list de un select con Struts2 en el foro de Java en Foros del Web. Buenas!! Llevo horas con este problema y no he logrado encontrar nada que me explique como hacerlo detalladamente. Resulta que estoy haciendo una pequeña aplicación ...
  #1 (permalink)  
Antiguo 30/01/2010, 11:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 30
Antigüedad: 15 años, 9 meses
Puntos: 0
como cargar el atributo list de un select con Struts2

Buenas!!

Llevo horas con este problema y no he logrado encontrar nada que me explique como hacerlo detalladamente.

Resulta que estoy haciendo una pequeña aplicación que usa Struts2. Ahora mismo quiero hacer un select dinámico que se rellene con los datos de una base de datos.

Se como hacer un formulario con la etiqueta <s:form> y mas o menos como funciona la etiqueta <s:select> lo que no logro entender es como se carga con el atributo list los valores que necesito. El formulario lo tengo relacionado con un action cuando a este le doy al boton "submit" para que envie los valores pero lo que necesito es vincular la pagina a un action para que cuando carge el formulario me rellene el select de alguna forma. El problema es que la página es una especie de index.jsp que no está relacionada a otra previamente.

¿Alguien podría saber como solucionarlo?

He visto por internet como con un action y su método execute se puede rellenar un select lo que no entiendo es la forma de vincularlo con el formulario ¿A través del fichero struts.xml? ¿De que forma?

Muchas gracias por edelantado
  #2 (permalink)  
Antiguo 30/01/2010, 13:21
 
Fecha de Ingreso: diciembre-2001
Ubicación: Asuncion
Mensajes: 143
Antigüedad: 22 años, 10 meses
Puntos: 1
Respuesta: como cargar el atributo list de un select con Struts2

Veamos:

Listado.java
Código Javascript:
Ver original
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. public class Listado {
  5.     private List<String> lista;
  6.  
  7.     public List<String> getLista() {
  8.         return lista;
  9.     }
  10.    
  11.     public String execute()
  12.     {
  13.         lista = new ArrayList<String>();
  14.         lista.add("Item 1");
  15.         lista.add("Item 2");
  16.         lista.add("Item 3");
  17.         lista.add("Item 4");
  18.         lista.add("Item 5");
  19.         return "success";
  20.     }
  21. }

struts.xml
Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6.     <package name="default" extends="struts-default">
  7.          <action name="Listado" class="Listado">
  8.              <result name="input">index.jsp</result>
  9.              <result>index.jsp</result>
  10.          </action>
  11.     </package>
  12. </struts>

index.jsp
Código HTML:
Ver original
  1. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2. <%@taglib prefix="s" uri="/struts-tags"%>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  4.   "http://www.w3.org/TR/html4/loose.dtd">
  5.  
  6.     <head>
  7.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8.         <title>Listado</title>
  9.     </head>
  10.     <body>
  11.         <s:form>
  12.             <s:select list="lista" label="Listado"/>
  13.             <s:submit value="Enviar"/>
  14.         </s:form>
  15.     </body>
  16. </html>

El tag <s:select/> tambien puede ser rellanado directamente usando "hardcode":
Código HTML:
Ver original
  1. <s:select list="#{'01':'Jan', '02':'Feb'}" label="Listado con clave/valor"/>
  2. <s:select list="{'Item1', 'Item2', 'Item3'}" label="Listado con valores"/>

Espero que te sirva
  #3 (permalink)  
Antiguo 30/01/2010, 13:44
 
Fecha de Ingreso: febrero-2009
Mensajes: 30
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: como cargar el atributo list de un select con Struts2

Muchas gracias!!

Muy interesante y util. Al final había logrado conseguir algo parecido por medio de la etiqueta <s:a href> aunque eso me obligaba a dar un rodeo por medio de un enlace. Tu solución es mucho mas limpia y directa.

Gracias.
  #4 (permalink)  
Antiguo 01/10/2010, 04:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: como cargar el atributo list de un select con Struts2

El problema que veo yo es para rellenarlo desde una DB donde tenga que rellenar un Value diferente a la descripción, como se puede hacer?
Si recuperas los datos, y los formateas para que te quede como detallas, te salta un error de que no acepta argumentos. Si creas una lista, el "VALUE" y la "descripcion" tendran el mismo valor.

Alguien sabe como solucionar esto?

Gracias.
  #5 (permalink)  
Antiguo 01/10/2010, 04:39
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: como cargar el atributo list de un select con Struts2

Si en lugar de una lista le pasas un Map, toma las keys como values y los values como descripción.

Además hay varios parámetros como listkey o listvalue para tener más control.

http://struts.apache.org/2.1.2/strut...ts/Select.html
  #6 (permalink)  
Antiguo 01/10/2010, 04:47
 
Fecha de Ingreso: septiembre-2010
Mensajes: 14
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: como cargar el atributo list de un select con Struts2

Hola Xerelo,
muchas gracias por contestar, era el agujero negro que no sabía encontrar la solución. Hoy mismo me lo miro y lo pruebo!!

Un saludo!

Etiquetas: list, select, struts, atributos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:03.