Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/08/2008, 05:13
Spacer
 
Fecha de Ingreso: agosto-2008
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Exclamación Colecciones, JSP, JSTL y ActionForm

Hola a todos :)

Tengo el siguiente ActionForm:
Código:
package airshines.struts;

import javax.servlet.http.*;
import org.apache.struts.action.*;
import java.util.*;
import airshines.beans.*;

public class BookFlightsForm extends ActionForm {
        private List<Integer> m_SelectedFlights;
        public List<Integer> getSelectedFlights() { return m_SelectedFlights; }
        public void setSelectedFlights( List<Integer> value ) { m_SelectedFlights
= value; }

        private Hashtable<Vuelo, List<Asiento>> m_DepartureFlights;
        public Hashtable<Vuelo, List<Asiento>> getDepartureFlights() { return
m_DepartureFlights; }
        public void setDepartureFlights( Hashtable<Vuelo, List<Asiento>> value )
{ m_DepartureFlights = value; }

        private Hashtable<Vuelo, List<Asiento>> m_ReturnFlights;
        public Hashtable<Vuelo, List<Asiento>> getReturnFlights() { return
m_ReturnFlights; }
        public void setReturnFlights( Hashtable<Vuelo, List<Asiento>> value ) {
m_ReturnFlights = value; }

        public ActionErrors validate( ActionMapping mapping, HttpServletRequest
request )
        {
                ...
        }
}
Como se puede observar, las tres propiedades del ActionForm son
colecciones. Mi intención es utilizar la primera para almacenar los
identificadores de los vuelos seleccionados por el usuario para reserva,
mientras que en la segunda y en la tercera pretendo almacenar todos los
vuelos y asientos de cada uno para ida y vuelta respectivamente que
aparecen como resultados tras hacer una búsqueda. Así, únicamente tendría
que recorrer estas dos últimas colecciones buscando aquellas cuyas keys
Vuelo tengan como identificador alguno de los que se encuentra en la
primera colección.

Dicho esto, lo siguiente es parte de mi jsp:

Código:
        <html:form action="/bookflights.do" method="POST">
                <table id="table">
                        <tr id="tableheader">
                                ...
                        </tr>
                        ...
                        <c:forEach items="${departureFlights}" var="entry">
                                <c:set var="flight" value="${entry.key}" scope="page"></c:set>
                                <c:set var="places" value="${entry.value}" scope="page"></c:set>
                                ...
                                <tr id="tableRegular">
                                        <td align="center"><html:checkbox property="selectedFlights"
value="${flight.id}"></html:checkbox></td>
                                ...
Sin embargo, cuando intento acceder a la propiedad selectedFlights me
devuelve null en cualquier caso. ¿Qué podría hacer para solucionarlo?

Además, no tengo ni idea de cómo pasar las colecciones departureFlights y
returnFlights de la JSP (enviadas a la misma por medio del request del
Action de búsqueda FindFlightsAction) al ActionForm de reserva
BookFlightsForm. Probé con un <html:hidden property="departureFlights"
value="${departureFlights}" /> pero no tuve éxito como era de esperar.
¿Alguna idea?

Gracias; un saludo.