Olá pessoal,
Eu preciso de muita ajuda na sequência lógica com o qual o meu código está sendo escrito. Eu estou fazendo uma tela de cadastro (normal, rsrs) e eu quero fazer uma validação dos campos do cadastro:
- Se tem algum vazio > exibe mensagem “preencha todos os campos”;
- Se o e-mail está em formato incorreto > exibe mensagem “e-mail inválido”;
- Se a senha possui menos de 8 char > exibe mensagem “senha curta, minimo 8 chars”;
- Se a confirmação da senha é igual a senha > exibe mensagem “senhas não são iguais.”;
Ok, essas são os tratamentos que ainda nem tem nada a ver com o banco de dados. O que eu preciso é de uma estrutura que responda a todas essas validações e então insira no banco de dados. Até o presente momento, a estrutura IF-ELSE que criei trata os campos mas está errado.
Por exemplo:
- Se eu não digitar o e-mail corretamente e eu clicar em “Cadastrar”, ele irá mostrar “E-mail inválido” mas ainda assim vai inserir no banco de dados. O mesmo acontece para os outros campos.
Tudo isso está no evento de ação de um jButton (Estou usando o Swing) conforme visto abaixo:
private void btn_cadregistrarActionPerformed(java.awt.event.ActionEvent evt) {
usuariosBO = new UsuariosBO();
/* VALIDAÇÃO DE CADASTRO */
// Campos vazios.
if("".equals(f_cadsenha.getText()) || "".equals(f_cadsenha2.getText()) || "".equals(f_cadnome.getText()) ||
"".equals(f_caduser.getText()) || "".equals(f_cademail.getText())){
JOptionPane.showMessageDialog(null, "Preencha todos os campos");
String email = f_cademail.getText().trim();
//Expressão regular para validar
Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
Matcher m = p.matcher(email);
boolean matchFound = m.matches();
// E-mail válido ou inválido.
if(matchFound){
}
else{
JOptionPane.showMessageDialog(null, "E-mail inválido. Digite o formato correto!");
}
}
else{
usuariosBO.insert(loadDTO());
JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso!");
}
}
Há também as validações de Senha e ConfirmaSenha que eu fiz no Evento de FocoLost do jTextField (Swing), isto é, segui a lógica que assim que o usuário digitasse a senha e tirasse o foco do campo jTextField (chamada de f_cadsenha) um IF-ELSE iria validar se o campo possui mais de 8 caracteres ou não. Veja abaixo:
private void f_cadsenhaFocusLost(java.awt.event.FocusEvent evt) {
if(f_cadsenha.getText().length() < 8){
JOptionPane.showMessageDialog(null, "Sua senha deve conter no mínimo 8 caracteres.");
}
}
E também há o campo para confirmação da senha digitada no campo anterior. Esse é um IF-ELSE comparando igualdade nos dados inseridos.
private void f_cadsenha2FocusLost(java.awt.event.FocusEvent evt) {
String senha = f_cadsenha.getText();
String senha2 = f_cadsenha2.getText();
if(senha.equals(senha2)){
}
else{
JOptionPane.showMessageDialog(null, "Suas senhas não são iguais.");
}
}
No geral, esse tipo de código gerou algumas inconveniências, como por exemplo que toda vez que o foco sai de um campo para preencher outro, abre o JOptionPane com o aviso da instrução.
Bom, é isso. Por favor me ajudem. Não estou pedindo pra me darem de bandeja, por favor, não! Mas gostaria muito que pudesse apresentar uma resposta bem explicada. Eu não conheço todos os termos do Java, mas me esforço.
Obrigado comunidade pela ajuda. Se precisarem de mais informações sobre o problema para ajudar a melhorar o entendimento na resposta, eu edito o post e marco.
Grato.