Vraptor: 2 execuções de logicas com apenas 1 requisição
7 respostas
diegopolido
eae galera!!!
to com um problema mt loco com o vraptor!
eu to submetendo a um form com campos q equivalem aos parametros do componente da action…
ate ai tudo trankilo… mas quando eu aperto pra submeter ele chama essa logica 2 vezes!!!
na primeira vez, ele joga todos os parametros certinho, pois ta tudo preenchido…
na segunda chamada, os parametro ta tudu null (ou valor default, como false pra variaveis boolean, por exemplo) e, por exemplo, eu tiver criando algum objeto nessa logica, ele salva esse objeto no banco com tudu null
Verifique no seu botão submit, se ele não chama uma função javascript que faz o submit novamente, ou se estiver usando alguma taglib que permite indicar a ação no próprio botão de submit, se não está fazendo isso além de indicar a ação no form.
mas meu parceiro de programação ja deu esse palpite de botao de do form…
dai eu coloquei um <input type"submit"> do basicao e mesmo assim continuou chamando 2 vezes a logica!
esse form eh de uma parte do sistema do “site”
e o engraçado é que a parte “adm” do sistema funciona direitinho! chamando 1 logica por requisição (o normal e o certo xD)
ahh… hj ele também palpitou q fosse algo no css!
mas tudo que tem em relação ao “botaoForm” é isso:
.home form .botaoForm{float:right;}
.faleConosco .botaoForm{float:right;}
vlw abraço!
diegopolido
aki meu componente tambem:
@Component
public class SiteContaAdicionarComponent {
@Out(scope=ScopeType.SESSION)privateContaconta;@Out(scope=ScopeType.SESSION)privateUsuariousuario;@ParameterprivateStringnome;@ParameterprivateStringlogin;@ParameterprivateStringemail;@ParameterprivateStringsenha;@ParameterprivateStringsenhaConfirmacao;@ParameterprivatebooleanaceitouTermos;publicvoidformulario(){}publicvoidadicionar(){if(!aceitouTermos){thrownewNegocioExcecao("Não é possível criar a conta sem aceitar os termos de uso!");}System.out.println("sitecontaadicionar.adicionar");verificarConfirmacaoSenha();verificarExistenciaUsuario();Usuariousuario=newUsuario(TipoUsuario.CLIENTE);usuario.setNome(nome);usuario.setLogin(login);usuario.setEmail(email);usuario.setSenha(senha);// TODO mandar email para ativar a contausuario.setAtivado(true);Contaconta=newConta();usuario.setConta(conta);ContacontaSalva=newDAO().salvar(conta);System.out.println("conta == contaSalvar "+(conta==contaSalva));this.conta=contaSalva;UsuariousuarioSalvo=newDAO().salvar(usuario);this.usuario=usuarioSalvo;System.out.println("usuario == usuarioSalvo "+(usuario==usuarioSalvo));}privatevoidverificarConfirmacaoSenha()throwsNegocioExcecao{if(!senha.equals(senhaConfirmacao)){thrownewNegocioExcecao("A confirmação da senha não está correta!");}}privatevoidverificarExistenciaUsuario()throwsNegocioExcecao{UsuariousuarioPorLogin=newDAO().localizar(Usuario.class,"UsuarioPorLogin",login);if(usuarioPorLogin!=null){thrownewNegocioExcecao("Já existe um usuário cadastrado com esse nome!");}UsuariousuarioPorSenha=newDAO().localizar(Usuario.class,"UsuarioPorEmail",email);if(usuarioPorSenha!=null){thrownewNegocioExcecao("Já existe um usuário cadastrado com esse email!");}}
}
diegopolido
Ahh, outra coisa: só em escrever o endereço na barra e dar enter ele já chama a lógica duas vezes!! Então não tem nada a ver com botão ou form…
Estamos utilizando a versão 2.5.1
Já procuramos no fórum do VRaptor e não encontramos nada parecido. Criamos um post lá tb sobre este assunto.
Um amigo nosso tb está tendo o mesmo problema e postou sobre isso lá hoje…
Se alguém puder nos dar uma pista sobre o que está acontecendo ficaremos muito gratos!
Att,
G
gutomarzagao
A thread já é antiga, mas se alguém mais tiver esse problema, verifiquem se não tem 2 jars do Vraptor por engano.