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

Problemas con struts

Estas en el tema de Problemas con struts en el foro de Java en Foros del Web. Tengo problemas con struts, pues yo lleno un combobox con los datos de una base de datos, pero..., la JSP que tiene el combobox es ...
  #1 (permalink)  
Antiguo 09/07/2006, 12:18
 
Fecha de Ingreso: julio-2006
Mensajes: 1
Antigüedad: 17 años, 9 meses
Puntos: 0
Problemas con struts

Tengo problemas con struts, pues yo lleno un combobox con los datos de una base de datos, pero..., la JSP que tiene el combobox es la misma que se manda a llamar si hay alguna error en la introduccion de la informacion, entonces como en el request estan todos los datos a llenar en el comobobox pasa un error al volverse a llamar la misma JSP en caso de alguna equivocacion en los campos, dice que no se encuentra el arreglo de datos para llenar el combobox, me inmagino que es porque en el request en la siguiente llamada de la JSP ya no se encuentran los datos, como hago para que estos esten siempre ahi?.
Esto es una parte del codigo de el action:
public ActionForward LlenarCombo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

Perfil perfilForm = null;
String url= "jdbc:mysql://localhost:3306/proyecto2?";
String user= "root";
String pass= "root";


try {

//this.conection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306");
Class.forName("com.mysql.jdbc.Driver").newInstance ();
this.conection = DriverManager.getConnection(url,user,pass);

Statement stmt = conection.createStatement();

//sacar todo de la tabla pl_perfil
String sql = "Select * from pl_perfil";
ResultSet result = stmt.executeQuery(sql);

ArrayList lista=new ArrayList();
while(result.next()){
perfilForm= new Perfil();
perfilForm.setCode(result.getString("Codigo_Perfil "));
perfilForm.setPerfil(result.getString("Nombre_Perf il"));
lista.add(perfilForm);
}

result.close();
int count = lista.size();

request.setAttribute("PROFILES",lista);
//session.setAttribute("PROFILES",lista);

conection.close();

if(count>0)
return mapping.findForward("succes");

else{
return mapping.findForward("failure");
}

yo se que violo un poco el MVC haciendo eso de la conexion en el action pero, es nada mas una prueba.
ademas aqui esta un poco del codigo de la JSP:
<td class="gridcell">
<html:select property="code">

<html:options collection="PROFILES" property="code" labelProperty="perfil"/>

</html:select>
</td>

que puedo hacer?, si me pudieran ayudar se los agradeceria a mil, de antemano gracias por su tiempo.
  #2 (permalink)  
Antiguo 11/07/2006, 10:55
Avatar de hugo777  
Fecha de Ingreso: enero-2002
Ubicación: Lima, Perú
Mensajes: 757
Antigüedad: 22 años, 3 meses
Puntos: 1
Hola, porque en lugar de ponerlos en el request, los pones en el session. Así te evistas estar haciendo a cada momento del query, y ya los tienes disponibles cada vez que cargue la página.
__________________
Saludos,

H@C..
  #3 (permalink)  
Antiguo 12/07/2006, 08:58
 
Fecha de Ingreso: julio-2006
Ubicación: México, DF
Mensajes: 4
Antigüedad: 17 años, 9 meses
Puntos: 0
A ver tratare de explicar lo que entendi:

Ejecutas un ACTION y, despues de un proceso te muestra una JSP, la cual ya tiene algunos datos cargados (Combo), pero a su vez es capaz de recibir datos del usuario
Con estos datos el usuario ejecuta otra ACTION, para la cual primero se validan los datos que se capturaron, en STRUTS lo haces con el VALIDATE="TRUE", en caso de error se devuelve lo que indica el INPUT; bien es aqui donde creo que esta la falla, en el imput estas llamando directamente a la JSP, la cual NO TIENE NADA, es decir la info que llena los combos NO EXISTE. Lo que yo haria es cambia el INPUT por el ACTION que lleno los combos, obviamente la JSP en cuestion debe incluir algo como:

<jsp:include page="/jsp/error_messages.jsp" />

Para que se desplieguen los errores al capturar los datos (X campos es requerido, y es del formato z, etc)
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 02:26.