Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Sempre "Nenhuma empresa cadastrada"

insira seu código aqu<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>




<html>
    <body>
        <c:if test= "${not empty empresa}">
            Empresa ${ nomeEmpresa } cadastrada com sucesso!
        </c:if>

        <c:if test= "${empty empresa}">
            Nenhuma empresa cadastrada!
        </c:if>


    </body>
</html>i

Nesta parte do codigo seria onde ele pegaria o que eu inserisse em formNovaEmpresa.html e mostraria a frase "Empresa X cadastrada com sucesso,mas msm quando ocorre a inserção exibe a mensagem "Nenhuma empresa Cadastrada!"

4 respostas

Oi João

O problema deve estar no seu servlet, teria como postar o código dele aqui, por favor?

De qualquer forma, o NovaEmpresaServlet.java deveria ser:

@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        System.out.println("Cadastrando nova empresa");

        String nomeEmpresa = request.getParameter("nome");
        String paramDataEmpresa = request.getParameter("data");

        Date dataAbertura = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            dataAbertura = sdf.parse(paramDataEmpresa);
        } catch (ParseException e) {
            throw new ServletException(e);
        }

        Empresa empresa = new Empresa();
        empresa.setNome(nomeEmpresa);
        empresa.setDataAbertura(dataAbertura);

        Banco banco = new Banco();
        banco.adiciona(empresa);

        request.setAttribute("empresa", empresa.getNome());

        response.sendRedirect("listaEmpresas");
    }
 @WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        System.out.println("Cadastrando nova empresa");

        String nomeEmpresa = request.getParameter("nome");
        Empresa empresa = new Empresa();
        empresa.setNome(nomeEmpresa);

        Banco banco = new Banco();
        banco.adiciona(empresa);

        //chamar o JSP
        RequestDispatcher rd = request.getRequestDispatcher("/novaEmpresaCriada.jsp");
        rd.forward(request, response);

    }
}

Estranho que você me passou parâmetros e códigos não ensinados nas aulas,coisas até que eu não sei como se usa e quando alterei o codigo começou a dar erro 500 de NullPointerException.

solução!

Olá, João.

Tem dois pontos que vi nos códigos que postou. Primeiramente, é importante revisar o fluxo dos dados. Após o usuário ter preenchido os dados da empresa para o cadastro e clicou no botão para salvar, esse seu Servlet será chamado (NovaEmpresaServlet). Ele vai pegar os parâmetros, instanciar uma empresa, adicionar no banco, e após isso encaminhar para a página novaEmpresaCriada.jsp. Para que ele envie um parâmetro nesse encaminhamento é necessário adicionar a linha:

request.setAttribute("empresa", empresa.getNome());

Ficando assim:

//chamar o JSP
RequestDispatcher rd = request.getRequestDispatcher("/novaEmpresaCriada.jsp");
request.setAttribute("empresa", empresa.getNome());
rd.forward(request, response);

Com essa linha você estará dizendo para a sua página novaEmpresaCriada.jsp que existe um atributo chamado empresa que contém o nome da empresa cadastrada. Sem esse linha, seu jsp sempre vai mostrar a mensagem Nenhuma empresa cadastrada!. Para acessar o nome da empresa na página jsp você pode utilizar ${empresa}. Note que em seu arquivo jsp também precisa mudar onde está nomeEmpresa para empresa, pois deve ser o mesmo nome da variável.

<html>
    <body>
        <c:if test= "${not empty empresa}">
            Empresa ${empresa} cadastrada com sucesso!
        </c:if>
        <c:if test= "${empty empresa}">
            Nenhuma empresa cadastrada!
        </c:if>
    </body>
</html>

Realmente era isso Douglas muito Obrigado!!!!!