JSP (Java Server Page) - Ayuda con Error 500

 
Vista:

Ayuda con Error 500

Publicado por Antonio (1 intervención) el 16/05/2015 11:12:07
Buenas a todos, el caso es que estoy haciendo un mini-proyecto para clase, y me he quedado atascado en una parte que creo que esta bien, pero me sigue dando fallo sin motivo aparente (la excepción es java.lang.nullpointerexception ).

El caso es, estoy haciendo una especie de biblioteca, donde se pueden reservar y prestar libros, bueno, tengo un JSP llamado libros.jsp (el cual está dentro de WEB-INF), en esta página JSP se muestran los libros en una tabla, luego dentro de cada fila hay un radio button, si señalamos uno y pulsamos sobre un submit que hay, debería volver a recargarse la misma página, pero con otra tabla debajo de la primera donde muestra los ejemplares de ese libro.

Código de libros.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<%@page import="Clases.MetodosBD"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
 
<sql:setDataSource var="consulta" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/biblioteca" user="root"  password=""/>
 
<c:if test="${usuario==null || usuario==''}">
    <% response.sendRedirect("index.jsp");%>
</c:if>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <c:set var="i" value="${sessionScope['javax.servlet.jsp.jstl.fmt.locale.session']}"></c:set>
        <fmt:setBundle basename="Bundle.etiquetas"/>
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Libros de la biblioteca</h1>
        <c:if test="${usuario!=null && usuario!=''}">
            <% if (request.getParameter("id") == null) {
            %>
            <sql:query dataSource="${consulta}" var="result">
                SELECT * FROM libros;
            </sql:query>
            <form action="Redirect">
                <table border="1">
                    <tr>
                        <th><fmt:message key="id"/></th>
                        <th><fmt:message key="titulo"/></th>
                        <th><fmt:message key="autor"/></th>
                        <th><fmt:message key="reservar"/></th>
                        <th><input type="submit" value="Ejemplares"></th>
                    </tr>
                    <c:forEach var="row" items="${result.rows}">
                        <tr>
                            <td><c:out value="${row.id}"/></td>
                            <td><c:out value="${row.titulo}"/></td>
                            <td><c:out value="${row.autor}"/></td>
                            <td>Reservar</td>
                            <td><input type='radio' name="idlibro" value="${row.id}"/> </td>
                        </tr>
                    </c:forEach>
                </table>
            </form>
            <% } else {
            %>
            <sql:query dataSource="${consulta}" var="result">
                SELECT * FROM libros;
            </sql:query>
            <table border="1">
                <tr>
                    <th><fmt:message key="id"/></th>
                    <th><fmt:message key="titulo"/></th>
                    <th><fmt:message key="autor"/></th>
                    <th><fmt:message key="reservar"/></th>
                    <th><input type="submit" value="Ejemplares"></th>
                </tr>
                <c:forEach var="row" items="${result.rows}">
                    <tr>
                        <td><c:out value="${row.id}"/></td>
                        <td><c:out value="${row.titulo}"/></td>
                        <td><c:out value="${row.autor}"/></td>
                        <td>Reservar</td>
                        <td><input type='radio' name="idlibro" value="${row.id}"/> </td>
                    </tr>
                </c:forEach>
            </table><br>
            <h1> Ejemplares de:</h1>
            <sql:query dataSource="${consulta}" var="result">
                SELECT * FROM ejemplares where idLibro=<% request.getParameter("id"); %>;
            </sql:query>
            <c:out value=" SELECT * FROM ejemplares where idLibro=<% request.getParameter('id'); %>;"/>
            <table border="1">
                <tr>
                    <th><fmt:message key="idLibro"/></th>
                    <th><fmt:message key="idEjemplar"/></th>
                    <th><fmt:message key="edicion"/></th>
                    <th><fmt:message key="Disponible"/></th>
                </tr>
                <tr>
                    <td><c:out value="${row.idLibro}"/></td>
                    <td><c:out value="${row.idEjemplar}"/></td>
                    <td><c:out value="${row.edicion}"/></td>
                    <td>Disponible/No disponible</td>
                </tr>
            </table>
 
            <% }%>
        </c:if>
        <a href="index.jsp">Volver</a>
    </body>
</html>

El fallo da cuando debería aparecer la segunda tabla de los ejemplares después de hacer el submit

Dejo el código del Servlet que me redirecciona (redirect.java), solo he puesto el código relevante, lo demas es creado automáticamente por netbeans:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        HttpSession session = request.getSession();
        synchronized (session) {
            String hidden = request.getParameter("hid");
            String hiddenId = request.getParameter("id");
            //String hiddenTi = request.getParameter("ti");
            String address="";
            if (hidden.equals("pres")) {
                address = "WEB-INF/resultados/prestamos.jsp";
            }else if (hidden.equals("lib")) {
                address = "WEB-INF/resultados/libros.jsp";
            }else if(hidden.equals("cr")){
                address = "WEB-INF/resultados/closesession.jsp";
            }
 
            if (hiddenId!=null) {
                 address = "WEB-INF/resultados/libros.jsp";
                 request.setAttribute("id", hiddenId);
                 //request.setAttribute("Ti", hiddenTi);
            }
            RequestDispatcher dispatcher = request.getRequestDispatcher(address);
            dispatcher.forward(request, response);
        }
    }

Un saludo y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder