[RESOLVIDO] Usar mesmo objeto em métodos diferente em Servlet

4 respostas
fabiomariner

bom dia galera, estou com o seguinte problema:

declaro um objeto do meu bean para armazenar dados recebidos por parâmentro:
String matricula = request.getParameter("matricula");
		String nome = request.getParameter("nome");
		String curso = request.getParameter("curso");		
		String dtMatricula = request.getParameter("dataMatricula");		
		
		AlunoTO aluno = new AlunoTO();
		aluno.setMatricula(matricula);
		aluno.setNome(nome);
		aluno.setCurso(curso);

             salvar(request, response, aluno);	// isso deu errado
o código acima está em um método, quero usar o mesmo objeto para recuperar esses dados e salvar em um Map em outro método:
mapAlunos.put(aluno.getMatricula(), new AlunoTO(aluno.getMatricula(), aluno.getNome(), aluno.getCurso(),aluno.getDataMatricula()));

tetei usar uma parâmento na assinatura do método mas recebi um erro:

private void salvar(HttpServletRequest request, HttpServletResponse response, AlunoTO aluno) throws ServletException, IOException {
The method salvar(HttpServletRequest, HttpServletResponse, AlunoTO) in the type AlunoServlet is not applicable for the arguments (HttpServletRequest, HttpServletResponse)

alguma sugestão de como posso fazer isso?

desde já obrigado pela colaboração.

4 Respostas

drsmachado

Posta o código inteiro.

fabiomariner
private void incluir(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		String matricula = request.getParameter("matricula");
		String nome = request.getParameter("nome");
		String curso = request.getParameter("curso");		
		String dtMatricula = request.getParameter("dataMatricula");		
		
		AlunoTO aluno = new AlunoTO();
		aluno.setMatricula(matricula);
		aluno.setNome(nome);
		aluno.setCurso(curso);
			
		SimpleDateFormat formataData = new SimpleDateFormat("dd/MM/yyyy");	
		
		try {
			//String data = formataData.format(dtMatricula);
			Date dataCerta = (Date) formataData.parse(dtMatricula);
			System.out.println(dataCerta);
			aluno.setDataMatricula(dataCerta);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		salvar(request, response);		
		consultar(request, response);
	}
private void salvar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		@SuppressWarnings("unchecked")
		Map<String, AlunoTO> mapAlunos = (Map<String, AlunoTO>) request.getSession().getServletContext().getAttribute("alunos");
		AlunoTO aluno = new AlunoTO(); // <------------- preciso dos dados armazenados no bean
		mapAlunos.put(aluno.getMatricula(), new AlunoTO(aluno.getMatricula(), aluno.getNome(), aluno.getCurso(),aluno.getDataMatricula()));
		
		HttpSession session = request.getSession();
		session.setAttribute("mapAlunos", mapAlunos);	
	}
drsmachado

1 - O erro

Diz que você está chamando um método que espera receber um HttpServletRequest, um HttpServletResponse e um AlunoTO, mas está passando apenas o request e o response.
Ou seja, você tem o método assim

private void salvar(HttpServletRequest request, HttpServletResponse response, AlunoTO aluno) throws ServletException, IOException {

Mas o chama assim

salvar(request, response);

Para isso, temos duas alternativas:
1 - Transforme o atributo aluno em uma variável da classe

public class BlaBlaBla extends HttpServlet{
    private AlunoTO aluno;
    //não esqueça os getters e setters
}

2 - Altere a chamada para:

salvar(request, response, aluno);

Não esqueça de salvar…

fabiomariner

poxa cara… era isso mesmo, provavelmente testei o código sem salvar na IDE, aí pensei que eu não podia usar outros parâmetros junto com o response e o request (falta de atenção ao ler o erro), muito obrigado pela ajuda, até a próxima

Criado 13 de fevereiro de 2013
Ultima resposta 13 de fev. de 2013
Respostas 4
Participantes 2