0

I´m trying to display two vectors from a servlet in jsp using JSTL. It delivers an error "served at / "nameofmyfile". No idea what´s wrong.

I coded like this. My servlet:

    Vector<Mascotas> masco;
Usuario nomu=(Usuario)request.getSession().getAttribute("usuario");

String nomusu=nomu.getUsuario();

try {
    masco=GestorBD.getInstance().cargarAni(nomusu);

    request.setAttribute("losanimales", masco);
    RequestDispatcher rd=request.getRequestDispatcher("pedircita.jsp");
    rd.forward(request, response);

} catch (ClassNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
} catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}



Vector<Veterinario> vet;

try {
    vet=GestorBD.getInstance().cargarVet();
    request.getSession().setAttribute("los veterinarios",vet);
    //response.sendRedirect("pedircita.jsp");
    RequestDispatcher rd=request.getRequestDispatcher("pedircita.jsp");
    rd.forward(request, response);
} catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}



}

}

This is my GestorBD--DataBase

    //To charge beans Veterinarios and Mascotas

public Vector<Veterinario> cargarVet() throws SQLException, ClassNotFoundException {

    Vector<Veterinario> vector= new Vector<Veterinario>();
    Veterinario v=null;

    establecerConexion();

    String sql="SELECT id_vete,nombre_vet,apellidos_vet from veterinarios";
    PreparedStatement pst=conn.prepareStatement(sql);
    ResultSet rs=pst.executeQuery();

    if(rs.next()){

     v=new Veterinario();

     v.setId_vete(rs.getInt("id_vete"));
     v.setNombre_vet(rs.getString("nombre_vet"));
     v.setApellidos_vet(rs.getString("apellidos_vet"));

    vector.add(v);

    }

    cerrarConexion();
    return vector;
}


public Vector<Mascotas> cargarAni(String nomusu) throws SQLException, ClassNotFoundException {

    Vector<Mascotas> vector=new Vector<Mascotas>();
    Mascotas a=new Mascotas();

    establecerConexion();

    String sql="SELECT id_ani,nombre_ani FROM mascotas WHERE nombre_prop=?";

    PreparedStatement pst=conn.prepareStatement(sql);
    ResultSet rs=pst.executeQuery();

    if(rs.next()){

        a= new Mascotas();
        a.setId_animal(rs.getInt("id_ani"));
        a.setNombre_ani(rs.getString("nombre_ani"));

        vector.add(a);


    }
        cerrarConexion();
        return vector;
    }

And finally my "pedircita.jsp":

    <article>

                <h2>FORMULARIO DE PETICION DE CITAS</h2>


            <form name="formupedircita" id="formupedircita" action="ServletPedirCita" method="post">
    <label>Nombre_propietario :</label><input type="text" name="prop" placeholder="Nombre_propietario" required><br/>
    <label>Nombre_mascota  :</label><select multiple="multiple" name="ani">
                            <c:forEach var="element" items="${losanimales}">
                            <option value="${ element.id_animal}">${element.nombre_ani}</option>
                            </c:forEach>
                            </select>


    <label>Introduzca la fecha de la cita  que desea :*</label><input type="text" name="fecha_cita" value="00-00-2015" required><br/>
    <label>Introduzca hora y minutos:</label><br/>
    Horas
    <select name="hora">

        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
        <option value="13">13</option>
        <option value="16">16</option>
        <option value="17">17</option>
        <option value="18">18</option>
        <option value="19">19</option>
    </select>

    Minutos
    <select name="minutos">
        <option value="1">00:00</option>
        <option value="2">00:30</option>

    </select>


    Introduzca su veterinario:
    <select multiple="multiple" name="veterinario">
        <c:forEach var="element" items="${losveterinarios}">
        <option value="${element.id_vete }">${element.nombre_vet }${element.apellidos.vet }</option>
        </c:forEach>
    </select>

    <input type="submit" name="boton"  class="boton" value="Enviar">

</form>
<a class="boton"id="salir" href="ServletSalir">SALIR</a>
</article>


Could you please give me any suggestion about this matter? Thanks a million
Miriam
  • 1
  • 3

1 Answers1

0

The Servlet must not have two RequestDispatcher so if the servlets is coded this way:

 Vector<Mascotas> masco;
 Vector<Veterinarios> vete;
 Usuario nomu=(Usuario)request.getSession().getAttribute("usuario");

 String nomusu=nomu.getUsuario();

try {
    masco=GestorBD.getInstance().cargarAni(nomusu);
    vete=GestorBD.getInstance().cargarVet();
request.setAttribute("losanimales", masco);
request.setAttribute("losveterinarios",vete);
RequestDispatcher rd=request.getRequestDispatcher("pedircita.jsp");
rd.forward(request, response);

} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

Both attributes("losanimales","losveterinarios") can be reached from the request by de jsp and they will be displayed on the selects.

Hope will be helpful to someone else.

Miriam
  • 1
  • 3