Pessoal,
na minha webApp quero possibilitar a troca de senha pelo usuário.
A lógica que pretendo usar é:
os campos não podem ser vazios;
a senha atual, que é digitada pelo usuário, tem que ser igual a senha obtida pelo objeto usuário criado na sessão;
a senha nova deve ser informada em 2 campos distintos para comparação.
Fiz conforme abaixo, mas não está correto.
Alguém pode me ajudar a montar esse fluxo de controle ?
if (senha == "" || senhaD == "" || senhaN=="" || senhaC=="") {
out.print("A senha não pode ser vazia.");
} else if (senha==senhaD) {
out.print("A senha atual não confere.<br>");
} else if ((senhaN==senhaC)) {
out.print("A senha Nova é diferente da Reinformada.<br>");
} else if (!dao.trocaSenha(usuario)) {
response.sendRedirect("error.jsp");
out.print("erro<br>");
} else if (dao.trocaSenha(usuario)) {
out.print("Senha alterada com sucesso !");
response.sendRedirect("sucesso.jsp");
}
Agradeço pela ajuda.
Em qual if ta falhando?
OBS.: comparar String com ==? :shock: :shock: :shock:
Algumas considerações:
- Não use == para comparar igualdade de objetos (como Strings), use o método equals.
- Você está chamando 2x o método trocaSenha… ele irá no banco mais do que o necessário.
- Não vi em que momento você coloca a nova senha no objeto usuário
- Utilize nome mais claros para suas variaveis: ao invés de senhaN tente novaSenha
Ficaria algo mais ou menos assim:
if (senha.isEmpty() || senhaD.isEmpty() || senhaN.isEmpty() || senhaC.isEmpty() ) {
out.print("A senha não pode ser vazia.");
} else if (!senha.equals(senhaD) ) { //aqui você estava testando igualdade, tem que testar diferença
out.print("A senha atual não confere.<br>");
} else if ( !senhaN.equals(senhaC) ) { // novamente, testando igualdade, tem que testar diferença
out.print("A senha Nova é diferente da Reinformada.<br>");
} else {
usuario.setSenha(senhaN);
boolean resultadoTrocaSenha = dao.trocaSenha(usuario);
if ( resultadoTrocaSenha ) {
out.print("Senha alterada com sucesso !");
response.sendRedirect("sucesso.jsp");
} else {
response.sendRedirect("error.jsp");
out.print("erro<br>");
}
}
[quote=AbelBueno][quote=jMarcel]
if (senha == "" || senhaD == "" || senhaN=="" || senhaC=="") {
out.print("A senha não pode ser vazia.");
} else if (senha==senhaD) {
out.print("A senha atual não confere.<br>");
} else if ((senhaN==senhaC)) {
out.print("A senha Nova é diferente da Reinformada.<br>");
} else if (!dao.trocaSenha(usuario)) {
response.sendRedirect("error.jsp");
out.print("erro<br>");
} else if (dao.trocaSenha(usuario)) {
out.print("Senha alterada com sucesso !");
response.sendRedirect("sucesso.jsp");
}
[/quote]
Algumas considerações:
- Não use == para comparar igualdade de objetos (como Strings), use o método equals.
- Você está chamando 2x o método trocaSenha… ele irá no banco mais do que o necessário.
- Não vi em que momento você coloca a nova senha no objeto usuário
- Utilize nome mais claros para suas variaveis: ao invés de senhaN tente novaSenha
Ficaria algo mais ou menos assim:
[code]
if (senha.isEmpty() || senhaD.isEmpty() || senhaN.isEmpty() || senhaC.isEmpty() ) {
out.print(“A senha não pode ser vazia.”);
} else if (!senha.equals(senhaD) ) { //aqui você estava testando igualdade, tem que testar diferença
out.print(“A senha atual não confere.
”);
} else if ( !senhaN.equals(senhaC) ) { // novamente, testando igualdade, tem que testar diferença
out.print(“A senha Nova é diferente da Reinformada.
”);
} else {
usuario.setSenha(senhaN);
boolean resultadoTrocaSenha = dao.trocaSenha(usuario);
if ( resultadoTrocaSenha ) {
out.print("Senha alterada com sucesso !");
response.sendRedirect("sucesso.jsp");
} else {
response.sendRedirect("error.jsp");
out.print("erro<br>");
}
}
[/code][/quote]
Obrigado por tudo !