Duplicando Registro

3 respostas
M

Pessoal, estou começando a desenvolver em MVC sem uso de Frameworks e estou tendo problemas ao Incluir um novo registro no BD.

Tenho a página que LISTA todos os registros, nela tenho um link INCLUIR que chama o formulário de cadastro na mesma página por AJAX. Ao GRAVAR o action do form chama meu ACTUnidade.do (abaixo) e lá após gravar o registro eu redireciono para minha LISTA novamente. Até ai tudo bem, mas se eu der REFRESH na página ele duplica o registro que acabei de cadastrar.

Como posso controlar isso para que ele não duplique ??

package biblioteca.act;

import java.sql.SQLException;
import java.util.ArrayList;

import biblioteca.dao.DAOUnidade;
import biblioteca.vo.VOUnidade;

public class ACTUnidade extends ServletGenerico{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void controle()throws SQLException, Exception{

		String retorno 			= "";
		String metodo  			= "";
		String tipo_form			= "";
		
		String id_unidade			= "";
		String descricao			= "";
		
		VOUnidade 	vo 	= new VOUnidade();
		DAOUnidade 	dao 	= new DAOUnidade();
		ArrayList 	array	= new ArrayList();
		
		if(request.getParameter("tipo") != null){
			tipo_form = request.getParameter("tipo");
			if(tipo_form.equals("incluir")){
				retorno = "/cadastros/unidade/formulario.jsp";
				request.setAttribute("tipo", tipo_form);
			}else if(tipo_form.equals("editar")){
				id_unidade = request.getParameter("id_unidade");
				vo.setId_unidade(id_unidade);
				array = dao.pegaUnidade(vo);
				retorno = "/cadastros/unidade/formulario.jsp";
				request.setAttribute("unidade", array);
				request.setAttribute("tipo", tipo_form);
			}
		}else{		
		
			if(request.getParameter("metodo") != null){			
				metodo = request.getParameter("metodo");
				id_unidade 	= request.getParameter("id_unidade");
				descricao	= request.getParameter("descricao");
				
				vo.setId_unidade(id_unidade);
				vo.setDescricao(descricao);
				
				if(metodo.equals("GravarNovo")){
					dao.inserirUnidade(vo);					
					metodo = "sucesso";
				}else if(metodo.equals("GravarAlterado")){
					dao.alterarUnidade(vo);					
					metodo = "sucesso";
				}else if(metodo.equals("Excluir")){
					dao.deletarUnidade(vo);
					metodo = "sucesso";
				}
				
			}else{
				array 	= dao.listarUnidades(vo);
				retorno = "/cadastros/unidade/index.jsp";
				request.setAttribute("unidades", array);
			}
		}
		
		if(metodo.equals("sucesso")){
			array 	= dao.listarUnidades(vo);
			retorno = "/cadastros/unidade/index.jsp";
			request.setAttribute("unidades", array);
		}		
		
		redireciona(retorno);
	}	
	

}

3 Respostas

T

Comecei com java web não faz uma semana… Mas chutando…

Teu redireciona() tá chamando forward() ou include() do ResquestDispatch? Se tiver tenta o mudar pra redirect() do HttpResponse.

Avisa ai o resultado! :lol:

M

Mas como é a sintaxe ?

Veja como está o método:

public void redireciona(String path) throws ServletException,IOException{
    // redirecionando para o JSP desejado, atraves da interface RequestDispatcher
     this.disp = getServletContext().getRequestDispatcher(path);

     this.disp.forward(this.request,this.response);
  }
T

Seria apenas

this.response.redirect(path);

Mas se for o que tô pensando, um include() já pode resolver (e talve fosse até melhor):

this.disp.include(this.request,this.response);
Criado 20 de setembro de 2006
Ultima resposta 21 de set. de 2006
Respostas 3
Participantes 2