Cita:
Iniciado por Profesor_Falken No soluciona el fallo del nullpointer, pero es uno de los múltiples fallos en ese código.
Te está indicando claramente que tienes un NullpointerException en la línea 43 de tu clase Redirect.
Como ya te preguntaba Xerelo. ¿Cual es la línea 43? ¿Porqué no has depurado?
Yo supongo que es porque uno de los parámetros (hidden) que recibes está a null (quizás porque estás enviando por parámetros por GET y solo los estás procesando en el Servlet en el doPost?). Como no haces ningún tipo de chequeo entonces estás condenado a tener errores de ejecución como este.
Para evitar los nullpointers en los equals bastaría que inviertas la condición y en lugar de
Pongas
Por otro lado tu código tiene muchas inconsistencias:
-Si hiddenId no es nulo siempre vas a redirigir a libros.jsp, por lo que lo que contenga hidden es indiferente y vas a machacar el valor ya asignado a address.
-Si hiddenId es nulo y hidden contiene un valor diferente de "pres", "lib" o "cr" va a redirigir a "" y vas a tener un error incontrolado. Habría que dirigir en ese caso quizás a una página de error que trace el problema.
Por útimo, ojo a las nomenclaturas. Los paquetes deben nombrarse siempre en minúsculas:
[url]http://www.oracle.com/technetwork/java/codeconventions-150003.pdf[/url]
Un saludo
Bueno, he revisado todo lo que me has comentado y lo he puesto correctamente, no sabía que el no poner / delante podía ocasionar fallos (no me había pasado)
No vi la pregunta de cual era la línea 43, esa es la primera línea donde empiezan los if, he realizado el cambio en los if como has comentado para comparar el string con la variable y no al revés.
Respecto a lo de hiddenId, si, si hiddenId no es nulo siempre va a ir a libros.jsp, es lo que quiero que haga, ya que si hiddenId no es nulo significa que hidden no existe y no machaca ningún dato porque hidden tendría valor nulo (hidden solo tiene valor cuando accedo a algo del menú principal).
(Supongo que ya os habéis dado cuenta, pero uso el mismo servlet Redirect.java para redireccionar a distintos sitios, quiero decir, lo uso en el menú principal y también en libros.jsp)
Hidden no puede tener un valor distinto de pres, lib o cr, ya que son los únicos datos que se pueden enviar desde el menú (uno para cada opción), y no se pueden modificar porque estoy usando post para enviar el form, y no se ve en la url ningún parametro.
Ahora que creo que esta un poco mas claro, el error de ahora es de sql
Cita: javax.servlet.ServletException:
SELECT * FROM ejemplares where idLibro=;
: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
El problema viene porque no consigo hacer que recoja el parámetro que se supone estoy enviando en el servlet, de ahí que falle al hacer la consulta.
Código:
if (hiddenId!=null) {
address = "/WEB-INF/resultados/libros.jsp";
request.setAttribute("clave", hiddenId);
}
Ahí, donde se vuelve a redireccionar a libros.jsp, al hacer después el dispatcher.forward se supone que debe enviar el attribute que se esta estableciendo en esas líneas, pero por algún motivo aparece sin nada.
No es un valor nulo al parecer, ya que si fuera nulo no intentaría hacer la consulta (la parte de la consulta está en el ELSE del if que comprueba que "clave " sea nulo, si es nulo es que no he intentado ver los ejemplares de un libro).
Este mismo mini-proyecto lo hice primero en php, y ni punto de comparación con la facilidad que lo hice en php.
Gracias por contestar, a ver si consigo salir del problema