Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
8
respuestas

[Duda] Error 500 a eliminar Empresa.

¡Hola!

Al momento de eliminar empresas de la lista de empresas me deja, de hecho hace la redirección a la lista, esto pasa con todas menos una, Caelum, cuando intento eliminar esta empresa me manda a un error 500.

Les comparto mi código y el error que aparece en el navegador, gracias de antemano.

package com.alura.gerenciador.servlet;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class DB {

    private static List<Empresa> listaEmpresas = new ArrayList<>();
    private static Integer llaveSecuencial = 1;

    static {
        Empresa empresa = new Empresa();
        empresa.setId(DB.llaveSecuencial++);
        empresa.setNombre("Alura");
        Empresa empresa2 = new Empresa();
        empresa.setId(DB.llaveSecuencial++);
        empresa2.setNombre("Caelum");

        listaEmpresas.add(empresa);
        listaEmpresas.add(empresa2);

    }

    public void agregarEmpresa(Empresa empresa) {
        empresa.setId(DB.llaveSecuencial++);
        DB.listaEmpresas.add(empresa);

    }

    public List<Empresa> getEmpresas() {
        return DB.listaEmpresas;
    }

    public void eliminarEmpresaServlet(Integer id) {

        Iterator <Empresa> it = listaEmpresas.iterator();
         while(it.hasNext()) {
             Empresa emp = it.next();
                if(emp.getId()== id) {
                    it.remove();
                }
         }

    }

} 
8 respuestas
package com.alura.gerenciador.servlet;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import org.apache.jasper.tagplugins.jstl.core.ForEach;

public class ListaEmpresasServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        DB baseDeDatos = new DB();
        List<Empresa> listaEmpresas = baseDeDatos.getEmpresas();


        request.setAttribute("empresas", listaEmpresas);

        RequestDispatcher rd = request.getRequestDispatcher("/listaEmpresas.jsp");
        rd.forward(request, response);
    }
}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.util.List, com.alura.gerenciador.servlet.Empresa"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

    <c:if test="${not empty empresa }">
        Empresa  ${ empresa } registrada!<br />

        </c:if> 

    Lista de Empresas:
    <br />




    <ul>
        <c:forEach items="${empresas}" var="empresa">
            <li>

            ${ empresa.nombre } - <fmt:formatDate value="${empresa.fechaAbertura }" pattern="dd/MM/yyyy"/>

            <a href="/gerenciador/eliminarEmpresaServlet?id=${ empresa.id }">eliminar</a>

            </li>
        </c:forEach>
    </ul>

</body>
</html>
package com.alura.gerenciador.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

public class eliminarEmpresaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String paramId = request.getParameter("id");
        Integer id = Integer.valueOf(paramId);

        System.out.println(id);


        DB db = new DB();
        db.eliminarEmpresaServlet(id);


        response.sendRedirect("listaEmpresas");
    }


}
package com.alura.gerenciador.servlet;

import java.util.Date;

public class Empresa {

    private Integer id;
    private String nombre;
    private Date fechaAbertura = new Date();

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Date getFechaAbertura() {
        return fechaAbertura;
    }

    public void setFechaAbertura(Date fechaAbertura) {
        this.fechaAbertura = fechaAbertura;
    }

}

Estado HTTP 500 – Internal Server Error Tipo Informe de Excepción

mensaje For input string: ""

Descripción El servidor encontró un error interno que hizo que no pudiera rellenar este requerimiento.

excepción

java.lang.NumberFormatException: For input string: "" java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) java.base/java.lang.Integer.parseInt(Integer.java:675) java.base/java.lang.Integer.valueOf(Integer.java:992) com.alura.gerenciador.servlet.eliminarEmpresaServlet.doGet(eliminarEmpresaServlet.java:16) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) nota La traza completa de la causa de este error se encuentra en los archivos de registro del servidor.

Hola, el error lo tienes en la clase DB.java, cuando asignas la llaveSecuencial a empresa 2, no le pones empresa2, tuve el mismo error jaja

Error500EnDBSolucion

Te deberia de quedar asi el codigo:

SolucionErrorEnDB