9
respostas

Erro ao atribuir a data

No servlet NovaEmpresaServlet.java na linha que faz a atribuição da data a empresa, ele da um erro, que alega não ter o metodo set no modelo (linha em negrito)

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class NovaEmpresaServlet
 */
@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);
        
        //chamar o JSP
        RequestDispatcher rd = request.getRequestDispatcher("/novaEmpresaCriada.jsp");
        request.setAttribute("empresa", empresa.getNome());
        rd.forward(request, response);
    }

}

Abaixo segue o código da classe modelo:

package br.com.alura.gerenciador.servlet;

import java.util.Date;

public class Empresa {

    private Integer id;
    private String nome;
    private Date dataAbertura;
    
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public Date getDataAbertura() {
        return dataAbertura;
    }
    public void setDataAbertura(Date dataAbertura) {
        this.dataAbertura = dataAbertura;
    }
    
    
    
    
    
}
9 respostas

Oie Alexandre, tudo bem contigo?

Pode parecer besteira, mas você chegou a salvar a classe "Empresa"? As vezes, por conta de não ter sido salvo, o eclipse não entende o código novo que você adicionou e pode acabar dando esse tipo de erro.

Caso não seja isso, teria como você me mandar um print de como está aparecendo esse erro?

Fico no aguardo :)

Oi! Estou passando pelo mesmo problema.

A mensagem que recebo é esta abaixo e meus arquivos estão semelhantes aos do Alexandre.

*The method setDataAbertura(java.util.Date) in the type Empresa is not applicable for the arguments (java.util.Date) *

Imagino que o problema esteja no parse.

Complementando... Fiz uma novo teste comentando toda parte de parse e criei para a variável dataAbertura um new Date(). Ocorre que mesmo assim o método setDataAbertura reclama o recebimento de um Date. Muito estranho, ao mesnos para mim.

dataAbertura = new Date();

        Empresa empresa = new Empresa();
        empresa.setNome(nomeEmpresa);
        empresa.setDataAbertura(dataAbertura);   //Linha com erro

Já conferi os arquivos, os imports e acho que foi tudo. Não sei mais o que fazer.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oie Tarcísio, tudo bem contigo?

Consegue mandar seu código completo da classe "Empresa" e "NovaEmpresaServlet" para eu dar uma olhada?

Preciso ver código completo para ter uma noção melhor do que pode estar acontecendo.

Fico no aguardo :)

Segue, Igor.

package br.com.tarcisio.gerenciadores.servlets;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@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("LOG:Cadastrando nova empresa");

        String nomeEmpresa = request.getParameter("nome"); 
        String paramDataAbertura = request.getParameter("dataAbertura"); 

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

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

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

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

}
package br.com.tarcisio.gerenciadores.servlets;

import java.util.Date;

public class Empresa {

    private Integer id;
    private String nome;
    private Date dataAbertura = new Date();

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public Date getDataAbertura() {
        return dataAbertura;
    }
    public void setDataAbertura(Date dataAbertura) {
        this.dataAbertura = dataAbertura;
    }

}

Igor Chagas, conseguiu ver isto aqui?

Oie Tarcísio, tudo bem?

Perdão pela demora!

Vi sim! Me parece tudo certo.

Consegue me mandar a jsp "formNovaEmpresa"? Quero confimar uma coisa nela.

Fico no aguardo!