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

[SOLUCIONADO] Problemas con JSTL

Estas en el tema de Problemas con JSTL en el foro de Java en Foros del Web. Buenas a todos, estoy desarrollando un backend y estoy teniendo problemas en la pagina principal que muestra todos los registros de la tabla. Cuando modifico, ...
  #1 (permalink)  
Antiguo 27/04/2017, 04:52
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 8 años, 10 meses
Puntos: 1
Problemas con JSTL

Buenas a todos,


estoy desarrollando un backend y estoy teniendo problemas en la pagina principal que muestra todos los registros de la tabla.
Cuando modifico, borro ó inserto no se actualizan los cambios al redirigirse a esa pagina principal(en mi caso index.jsp).

Mi idea es en ese index.jsp que con JSTL llame a una servlet que es la que realiza el select a la BBDD.
Vereis que la he implementado con una clase FOTO para que cree un objeto donde vaya guardando las variables de cada fila de la consulta.
Voy a pegar el codigo del JSP y de la servlet. Del JSP no pego desde el principio ya que he desarrollado sessiones, cierre por inactividad y control de errores que pueden marear un poco para encontrar el error. Pego el codigo aislado donde esta el error entre JSTL y la servlet-

Muchas gracias por la ayuda:


codigo JSP:
<%@ page language="java" import="imagenes.*"%>
<%@page import="javax.servlet.http.HttpSession" %>

<html>
<head>


<link href="media/dataTables/demo_page.css" rel="stylesheet" type="text/css" />
<link href="media/dataTables/demo_table.css" rel="stylesheet" type="text/css" />

</head>

<body id="dt_example">
<div id="container">


<div id="demo_jui">
<form method="post" action="borrado.do" id="formBorrado" name="formBorrado">
<table id="Jtabla" class="display">
<thead>
<tr>
<th></th>
<th></th>
<th>Nombre</th>
<th>Descripcion</th>
<th>Longitud</th>
<th>Latitud</th>
<th>Fotografia</th>
<th>Posicion en el mapa</th>



</tr>
</thead>
<tbody>
<% for(Fotos c: MostrarTablaImagenes.GetFotos()){ %>
<tr>
<td> <a href="actualiza.do?nombre=<%=c.getNombre()%>&descr ipcion=<%=c.getDescripcion()%>&Id=<%=c.getId()%>" >Modificar</a></td>
<td> <input id="caja" value="<%=c.getId()%>" name="caja" type="checkbox" required="false"/></td>
<td><%=c.getNombre()%></td>
<td><%=c.getDescripcion()%></td>
<td><%=c.getLongitud()%></td>
<td><%=c.getLatitud()%></td>
<td><a href="<%=c.getPath()%><%=c.getNombreFoto()%>" >VER FOTO</a></td>
<td><a href="http://localhost:8080/oldViewsBackEnd/maps2.jsp?Id=<%=c.getId()%>" >PULSA PARA VISUALIZAR EN MAPA</td>

</tr>
<% } %>

</tbody>
<a href="http://localhost:8080/oldViewsBackEnd/prueba.html" >Nueva Foto</a>
<input id="borrar" value="Borrar" name="borrar" type="button" onclick="confirmacion()"/>
<a href="http://localhost:8080/oldViewsBackEnd/maps.jsp" >VER MAPA</a>
</table>
</form>
<a href="logOut.do" >Deslogarse</a>
</div>
</div>
</body>
</html>
<%
}
}

catch( Exception e){}%>








Codigo SERVELT:

package imagenes;


import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.LinkedList;
import java.util.List;



@WebServlet(name = "MostrarTablaImagenes", urlPatterns = {"/MostrarTablaImagenes"})
public class MostrarTablaImagenes extends HttpServlet {




/// <summary>
/// Singleton collection of companies
/// </summary>
private static List<Fotos> FotosData = null;

/// <summary>
/// Method that returns all companies used in this example
/// </summary>
/// <returns>List of companies</returns>
public static List<Fotos> GetFotos()
{
if (FotosData == null)
{
FotosData = new LinkedList<Fotos>();
try {
ResultSet rs = null;
String consultaSQL = "select * from imagenes2";
JDBC helper = new JDBC();
rs = helper.Select(consultaSQL);

while (rs.next()) {
int Id = rs.getInt("Id");
String nombre = rs.getString("Nombre");
String descripcion = rs.getString("Descripcion");
String path = rs.getString("Path");
String nombreFoto = rs.getString("NombreArchivo");
String longitud = rs.getString("Longitud");
String latitud = rs.getString("Latitud");


FotosData.add(new Fotos(Id,nombre, descripcion,path,nombreFoto,longitud,latitud ));

}
}
catch (SQLException ex) {
}
}
return FotosData;
}

}
  #2 (permalink)  
Antiguo 27/04/2017, 04:56
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Problemas con JSTL

Explico esto por si ayuda en algo:
- Si reinicio el servidor web los cambios se muestran.

-Si pongo en el index.jsp la consulta a la base de datos y se muestren los registros en cada fila de la tabla sin utilizar JSTL (o sea no pasando por la servlet) tambien se muestran los cambios.


Gracias :)
  #3 (permalink)  
Antiguo 27/04/2017, 05:03
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 14 años
Puntos: 188
Respuesta: Problemas con JSTL

No creo que el problema venga del JSTL.

¿Una vez ejecutada la acción estás redireccionando a la misma página, o refrescando la información en pantalla?

Si no es así deberías implementar algo en el servlet asociado al action que permita recuperar la información del contenido que queda una vez realizado el cambio y actualizar los resultados de la pantalla.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #4 (permalink)  
Antiguo 27/04/2017, 05:22
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Problemas con JSTL

Buenas,


lo que hago es en las servlets de borrado, actualizado, insertar ..es redirigir a index.jsp

Lo hago con response.sendRedirect("index.jsp");

Pero lo he probado con RequestDispatcher y tampoco lleva a index.jsp con la actualizacion pertinente.

Deberia hacerlo de otra forma?
  #5 (permalink)  
Antiguo 28/04/2017, 01:25
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 14 años
Puntos: 188
Respuesta: Problemas con JSTL

A lo mejor es un problema de configuración. Trata de identificar donde se te pierde el código e investiga un poco.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #6 (permalink)  
Antiguo 28/04/2017, 05:22
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 8 años
Puntos: 182
Respuesta: Problemas con JSTL

Buenas,

El hecho de que ignores las excepciones no ayuda:

Cita:
catch (SQLException ex) {
}
Intenta al menos poner un e.printStackTrace() o no simplemente no la captures y anade el throws en la definicion del metodo.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #7 (permalink)  
Antiguo 29/04/2017, 10:00
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Problemas con JSTL

Buenas,

bueno por ahora no me ha dado ello ningun problema. Pero tengo en cuenta tu consejo.

Gracias.

Última edición por sentoki79; 07/06/2017 a las 18:12
  #8 (permalink)  
Antiguo 26/04/2018, 16:28
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Problemas con JSTL

Retomo el tema, porque he vuelto con la aplicacion y sigue dando el mismo problema.
Estoy segurisimo que es por el mapeado, tengo un jsp que por JSTL llama a las variables que se han almacenado en una servlet. Esa servlet crea una lista de objetos de una clase, realiza una busqueda en la base de datos y lo comentado llamo a la servlet desde el jsp:
for(Personas c: DevolverPersonas.GetPersona()){
nombre=c.getNombre();
DNI=c.getDNI();
}

Pues ahi sin problemas todo sincroniza recoge variables, realiza sus acciones. Pero no se ven las modificaciones en las tablas.
Y estoy segurisimo que es problema por el mapeado en algun punto, poque si pongo la consulta a la base de datos en le jsp y realizo todas las acciones en el propio jsp actualiza las tablas sin problemas.

Agradecería mucho la ayuda, porque no me gustaria dejar la vista y el controlador en el mismo archivo.

Saludos
  #9 (permalink)  
Antiguo 26/04/2018, 17:41
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Problemas con JSTL

Comprobadisimo es depurar solo la servlet que crea las variables para el jsp y actualiza los datos.

En web.xml he hecho el mapeado, con .do y sin .do igualmente no va bien.
  #10 (permalink)  
Antiguo 26/04/2018, 17:54
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Problemas con JSTL

Se podria hacer igual pero sin utilizar un array de objetos?

Lo he intentado pero en el servlet intento hacer una funcion que devuelva solo un objeto da un error. Ademas no se como lo recogeria en el bucle foreach de jstl en el jsp.

Gracias si me echarais una mano
  #11 (permalink)  
Antiguo 26/04/2018, 18:23
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Problemas con JSTL

He probado a recoger las variables con variables de session en vez de con jstl desde el jsp, y ocurre lo mismo.

Mi gustaria aclarar que a la servlet no se le llama sino la he importado en el jsp y mi intencion es al cargar el jsp se vuelquen en ella las variables. No se si primero eso se puede. Y bajo mis novatos conocimientos en Java, entiendo que la servlet no actualiza los datos porque no es llamada por ningun archivo? quiero decir que no ay una accion en el codigo que llame a la servlet e igual por eso no actualiza los datos.

No se por comentar lo que he podido investigar.

Bueno gracias para quien se anime, saludos
  #12 (permalink)  
Antiguo 27/04/2018, 01:36
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 14 años
Puntos: 188
Respuesta: Problemas con JSTL

Es recomendable iniciar un nuevo mensaje explicando la situación punto a punto antes que reutilizar un mensaje antiguo que figura como resuelto.

Por otra parte.

Has realizado algún tutorial de servlets + jstl de este tipo?

https://www.uno-de-piera.com/introdu...jstl-con-java/
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #13 (permalink)  
Antiguo 27/04/2018, 03:46
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Problemas con JSTL

Hola gracias por contestar,


voy a iniciar un nuevo hilo en otro tema, gracias.

Por otro lado lo que pone en el tutorial ya lo he probado, he probado a hacer un return desde una funcion con un array list, he probado a crear un variable de sesion, y todo ello ejcuta y guarda datos en la base de datos, pero despues no se ven actualizados hasta que no se depura SOLO la servlet que envia esos datos.
Entonces no se por donde tirar.

Lo deRequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
rd.forward(request, response);
Lo he probado inumerables veces y siempre recoge en la servlet null.
Ahi tengo una duda de como en ese caso se ejecuta el codigo, el jsp con el paquete de la servlet importado ya recibe automaticamente los datos de esa servlet? porque a esa servlet en cuestión no se le llama en ningun momento del codigo?

Etiquetas: jstl, registros
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 19:53.