Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/05/2015, 03:31
antoniower
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 9 años
Puntos: 0
Pregunta Error java.lang.NullPointerException al redireccionar con Servlet

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

Código:
<%@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:

Código:
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

EDIT: Olvidé las líneas del error:

Cita:
java.lang.NullPointerException
at Servlet.Redirect.processRequest(Redirect.java:43)
at Servlet.Redirect.doGet(Redirect.java:73)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:790)
at org.apache.catalina.core.StandardWrapper.service(S tandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipel ine.java:99)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doServ ice(CoyoteAdapter.java:415)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:282)
at com.sun.enterprise.v3.services.impl.ContainerMappe r$HttpHandlerCallable.call(ContainerMapper.java:45 9)
at com.sun.enterprise.v3.services.impl.ContainerMappe r.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runS ervice(HttpHandler.java:201)
at org.glassfish.grizzly.http.server.HttpHandler.doHa ndle(HttpHandler.java:175)
at org.glassfish.grizzly.http.server.HttpServerFilter .handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver $9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterCha in.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterCha in.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterCha in.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterCha in.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(Pr ocessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTranspor t.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrateg y.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStr ategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStr ategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStr ategy$WorkerThreadRunnable.run(WorkerThreadIOStrat egy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPoo l$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPoo l$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:745)

Última edición por antoniower; 16/05/2015 a las 03:38