JSP (Java Server Page) - Problemas para convertir datos con Integer.parseInt

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido 1 puesto en JSP (Java Server Page) (en relación al último mes)
Gráfica de JSP (Java Server Page)

Problemas para convertir datos con Integer.parseInt

Publicado por Chris (1 intervención) el 11/12/2019 18:13:44
Un saludo para todos, requiero ayuda con el error mostrado en la imagen, al parecer es un error con el Parseint segun es null pero cuando inspecciono la pagina aparece el siguiente dato:

<input type="hidden" value="6" name="IdVacante">

el "value" indica que si esta halando el valor: el controlador es el siguiente:
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package rfp.modelos.controladorA;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.Part;
import rfp.modelos.dao.DbConnection;
import rfp.modelos.dao.SolicitudDao;
import rfp.modelos.dao.VacanteDao;
import rfp.modelos.paquetes.Solicitud;
import rfp.modelos.paquetes.Vacante;
import util.Utility;
 
public class SolicitudController extends HttpServlet {
 
    private static final String UPLOAD_DIR="uploads";
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String nombreParam=request.getParameter("nombre");
    String emailParam=request.getParameter("email");
    String telefonoParam=request.getParameter("telefono");
    String direccionParam=request.getParameter("direccion");
    String rentaParam=request.getParameter("renta");
    String ciudadParam=request.getParameter("ciudad");
    String experienciaParam=request.getParameter("experiencia");
    int idVacanteParam = Integer.parseInt(request.getParameter("IdVacante"));
    Solicitud solicitud=new Solicitud(0);
    solicitud.setFecha(new Date());
    solicitud.setNombre(nombreParam);
    solicitud.setEmail(emailParam);
    solicitud.setTelefono(telefonoParam);
    solicitud.setDireccion(direccionParam);
    solicitud.setRenta(rentaParam);
    solicitud.setCiudad(ciudadParam);
    solicitud.setExperiencia(experienciaParam);
    DbConnection conn=new DbConnection();
    VacanteDao vacanteDao=new VacanteDao(conn);
    Vacante vacante = vacanteDao.getById(idVacanteParam);
    solicitud.setVacante(vacante);
    String applicationPath = request.getServletContext().getRealPath("");
    String uploadFilePath=applicationPath+File.separator+UPLOAD_DIR;
    Part archivo=request.getPart("archivo");
    String archivoParam=archivo.getSubmittedFileName();
    RequestDispatcher rd;
    String msg="";
    if(archivoParam.endsWith("pdf")||archivoParam.endsWith("doc")||archivoParam.endsWith("docx")){
    String archivoFisico=Utility.randomAlphaNumeric(10)+archivoParam.replace("","_");
    solicitud.setArchivo(archivoFisico);
    SolicitudDao solicitudDao=new SolicitudDao(conn);
    solicitudDao.insert(solicitud);
    conn.disconnect();
    msg="<b>"+solicitud.getNombre()+"</b> hemos recibido tus datos." +"<b>Revisaremos tu CV y nos comunicaremos contigo.</b>Gracias.";
    request.setAttribute("message", msg);
    archivo.write(uploadFilePath+File.separator+archivoFisico);
    rd=request.getRequestDispatcher("/mensaje_guest.jsp");
    rd.forward(request, response);
    }
    else{
        msg="Solo se permiten archivos de tipo PDF,DOC y DOCX";
        request.setAttribute("message", msg);
        request.setAttribute("solicitud", solicitud);
        request.setAttribute("vacante", solicitud.getVacante());
        rd=request.getRequestDispatcher("/frm_cv.jsp");
        rd.forward(request, response);
    }
    }
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action=request.getParameter("action");
        HttpSession session=request.getSession();
        RequestDispatcher rd;
        switch(action){
            case "solicitudes":
                if(session.getAttribute("usuario")== null){
                    rd=request.getRequestDispatcher("/login.jsp");
                    rd.forward(request, response);
                }
                else{
                    this.verSolicitudes(request, response);
                }
                break;
            case "responder":
                if(session.getAttribute("usuario")== null){
                    rd=request.getRequestDispatcher("/login.jsp");
                            rd.forward(request, response);
                }
                else{
                    this.responder(request,response);
                }
                break;
        }
    }
    protected void verSolicitudes(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        RequestDispatcher rd;
        String msg=null;
        List<Solicitud> lista=null;
        DbConnection conn=new DbConnection();
        SolicitudDao solicitudDao=new SolicitudDao(conn);
        lista=solicitudDao.getAll();
        conn.disconnect();
        request.setAttribute("message", msg);
        request.setAttribute("solicitudes", lista);
        rd=request.getRequestDispatcher("/solicitudes.jsp");
        rd.forward(request, response);
    }
    protected void responder(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
        String email=request.getParameter("email");
        RequestDispatcher rd;
        request.setAttribute("email", email);
        rd=request.getRequestDispatcher("/email.jsp");
        rd.forward(request, response);
    }
}

este es la conexion a la base de datos:
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
package rfp.modelos.dao;
 
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;
import rfp.modelos.paquetes.Solicitud;
 
public class SolicitudDao {
 
    private DbConnection conn;
    public SolicitudDao(DbConnection conn){
        this.conn=conn;
    }
    public int insert(Solicitud solicitud){
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
        try{
            String sql="insert into Solicitud values(?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement preparedStatement=conn.getConnection().prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
            preparedStatement.setInt(1,solicitud.getIdSolicitud());
            preparedStatement.setString(4,format.format(solicitud.getFecha()));
            preparedStatement.setString(2,solicitud.getNombre());
            preparedStatement.setString(6,solicitud.getEmail());
            preparedStatement.setString(5,solicitud.getTelefono());
            preparedStatement.setString(3,solicitud.getDireccion());
            preparedStatement.setString(7,solicitud.getArchivo());
            preparedStatement.setString(8, solicitud.getRenta());
            preparedStatement.setString(9, solicitud.getCiudad());
            preparedStatement.setString(10,solicitud.getExperiencia());
            preparedStatement.setInt(11,solicitud.getVacante().getIdVacante());
            preparedStatement.executeUpdate();
            ResultSet rs=preparedStatement.getGeneratedKeys();
            int idSolicitud=0;
            if (rs.next()){
                idSolicitud=rs.getInt(1);
            }
            return idSolicitud;
            }
        catch(SQLException e){
            System.out.println("Error SolicitudDao.insert: "+e.getMessage());
            return 0;
        }
    }
 
    public List<Solicitud> getAll(){
       try{
           String sql="select * from Solicitud order by idSolicitud desc";
           PreparedStatement preparedStatement =conn.getConnection().prepareStatement(sql);
           ResultSet rs=preparedStatement.executeQuery();
           List<Solicitud> list=new LinkedList<>();
           Solicitud solicitud;
           VacanteDao vacanteDao=new VacanteDao(conn);
           while(rs.next()){
               solicitud=new Solicitud(rs.getInt("idSolicitud"));
               solicitud.setFecha(rs.getDate("fecha"));
               solicitud.setNombre(rs.getString("nombre"));
               solicitud.setEmail(rs.getString("email"));
               solicitud.setTelefono(rs.getString("telefono"));
               solicitud.setDireccion(rs.getString("direccion"));
               solicitud.setArchivo(rs.getString("archivo"));
               solicitud.setRenta(rs.getString("renta"));
               solicitud.setCiudad(rs.getString("ciudad"));
               solicitud.setExperiencia(rs.getString("experiencia"));
               solicitud.setVacante(vacanteDao.getById(rs.getInt("idVacante")));
               list.add(solicitud);
           }
           return list;
    }
       catch(SQLException e){
           System.out.println("Error SolicitudDao.getAll: "+e.getMessage());
           return null;
       }
    }
}

este es el bean:

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package rfp.modelos.paquetes;
 
import java.util.Date;
 
public class Solicitud {
    private int idSolicitud;
    private Date fecha;
    private String nombre;
    private String email;
    private String telefono;
    private String direccion;
    private String archivo;
    private String experiencia;
    private String renta;
    private String ciudad;
 
    private Vacante vacante;
 
    public Vacante getVacante() {
        return vacante;
    }
 
    public void setVacante(Vacante vacante) {
        this.vacante = vacante;
    }
 
 
    public String getRenta() {
        return renta;
    }
 
    public void setRenta(String renta) {
        this.renta = renta;
    }
 
    public String getCiudad() {
        return ciudad;
    }
 
    public void setCiudad(String ciudad) {
        this.ciudad = ciudad;
    }
 
    public Solicitud(int idSolicitud){
        this.idSolicitud=idSolicitud;
    }
 
    public int getIdSolicitud() {
        return idSolicitud;
    }
 
    public void setIdSolicitud(int idSolicitud) {
        this.idSolicitud = idSolicitud;
    }
 
 
    public Date getFecha() {
        return fecha;
    }
 
    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }
 
    public String getEmail() {
        return email;
    }
 
    public void setEmail(String email) {
        this.email = email;
    }
 
    public String getTelefono() {
        return telefono;
    }
 
    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }
 
    public String getDireccion() {
        return direccion;
    }
 
    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }
 
    public String getArchivo() {
        return archivo;
    }
 
    public void setArchivo(String archivo) {
        this.archivo = archivo;
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
 
    public String getExperiencia(){
        return experiencia;
    }
    public void setExperiencia(String experiencia){
        this.experiencia=experiencia;
    }
 
    @Override
    public String toString() {
        return "Solicitiud("+"id="+idSolicitud+", fecha="+fecha+", nombre="+nombre+", email="+email+", telefono="+telefono+", direccion="+direccion+", archivo="+archivo+", vacante="+vacante+ ", renta="+renta+", ciudad="+ciudad+", experiencia="+experiencia+")";
    }
    }

y aca el 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
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="favicon.ico">
    <title>Envio de CV</title>
    <!-- Bootstrap core CSS -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <!-- Custom styles for this template -->
    <link href="css/justified-nav.css" rel="stylesheet">
 
  </head>
 
  <body>
 
    <div class="container">
 
      <!-- The justified navigation menu is meant for single line per list item.
           Multiple lines will require custom code not provided by Bootstrap. -->
      <div class="masthead">
        <h3 class="text-muted">RFP Logistica</h3>
        <nav>
          <ul class="nav nav-justified">
            <li><a href="homepage">Inicio</a></li>
            <li><a href="admin?action=login">Administración</a></li>
            <li><a href="acerca.jsp">Acerca</a></li>
          </ul>
        </nav>
      </div>
      <br>
 
      <h4><font color="red">${message}</font></h4>
 
      <div class="panel panel-default">
        <div class="panel-heading">
          <h3 class="panel-title"><b>Enviar CV para vacante: ${vacante.nombre}</b></h3>
        </div>
        <div class="panel-body">
 
          <form action="solicitud" method="post" enctype="multipart/form-data">
             <div class="form-group">
              <label for="nombre">Nombre</label>
              <input type="text" class="form-control" name="nombre" value="${solicitud.nombre}" required id="nombre">
            </div>
            <div class="form-group">
              <label for="email">Email</label>
              <input type="email" class="form-control" name="email" value="${solicitud.email}" required id="email">
            </div>
            <div class="form-group">
              <label for="telefono">Teléfono</label>
              <input type="text" class="form-control" name="telefono" value="${solicitud.telefono}" required id="telefono">
            </div>
            <div class="form-group">
              <label for="direccio n">Dirección</label>
              <input type="text" class="form-control" name="direccion" value="${solicitud.direccion}" required id="direccion">
            </div>
            <div class="form-group">
              <label for="direccio n">Pretenciones de Renta</label>
              <input type="text" class="form-control" name="renta" value="${solicitud.renta}" required id="renta">
            </div>
            <div class="form-group">
              <label for="direccio n">Ciudad de Domicilio</label>
              <input type="text" class="form-control" name="ciudad" value="${solicitud.ciudad}" required id="ciudad">
            </div>
            <div class="form-group">
              <label for="direccio n">Años de Experiencia en el Cargo</label>
              <input type="text" class="form-control" name="experiencia" value="${solicitud.experiencia}" required id="experiencia">
            </div>
            <div class="form-group">
              <label for="archivo">Subir CV</label>
              <input type="file" required id="archivo" name="archivo">
              <p class="help-block">Solo se permite archivos [ pdf,doc,docx ]</p>
            </div>
              <input type="hidden" value="${vacante.idVacante}" name="IdVacante">
              <button type="submit" class="btn btn-success" >Enviar</button>
        </form>
        </div>
      </div>
 
      <!-- Site footer -->
      <footer class="footer">
        <p>&copy; RFP Logistica</p>
      </footer>
 
    </div> <!-- /container -->
 
  </body>
</html>

les agradezco de antemano.
Captura
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
Imágen de perfil de José Manuel
Val: 13
Ha aumentado 1 puesto en JSP (Java Server Page) (en relación al último mes)
Gráfica de JSP (Java Server Page)

Problemas para convertir datos con Integer.parseInt

Publicado por José Manuel (4 intervenciones) el 16/12/2019 17:41:44
Hola:

Entiendo que te da el error en la línea 33. Has comprobado que el campo del formulario que envía el valor se forma con un valor numérico de forma correcta pero, ¿has comprobado que te devuelve request.getParameter("IdVacante") exactamente, como cadena? Haz que te imprima ese valor para ver que estás recibiendo por ahí.

Utiliza un System.out..., un LOG4J o simplemente que imprima el valor que recibe directamente request.getParameter("IdVacante"). Si es un valor que no se pueda convertir en numérico, ahí está la causa del error. Otra cosa es que si es eso, ahora el problema a solucionar es porque está enviando un valor que no se puede convertir a numérico entero.

A ver que tal. Un saludo,
https://obelearningservices.com/blog/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar