Estou há um bom tempo sem programar, e estou voltando agora com dúvidas bobas.
Não consigo lembrar como parar a execução de um método tratado.
Tenho um método circundado com try/catch no qual valida se campos estão vazios.
Ele faz a validação e avisa que deve ser preenchido o campo, porém a execução continua até chegar na base de dados e ocorrer NullPoniterException. Alguém dá uma luz para parar a execução no tratamento e manter a tela de cadastro para o usuário fazer a correção?
public void actionPerformed(ActionEvent arg0) {
try {
cadastrar(montaObjeto());
} catch (Exception e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "Cadastrado com sucesso!");
}
Um dos métodos de tratamento de campos. Demais seguem o mesmo padrão:
public boolean validaDescricao(String descricao) {
boolean result = true;
if (descricao.equals(null) || descricao.equals("")) {
result = false;
JOptionPane.showMessageDialog(null, "Preencha o campo DESCRIÇÃO PRODUTO!");
}
return result;
Você pode criar um único método para validar todos os campos obrigatório, não precisa fazer um a um!
Exemplo:
public boolean validaCamposObrigatorios() {
if (meucampo.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Preencha o campo Meu Campo!");
meucampo.grabFocus();
return false;
}
if (meuoutrocampo.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Preencha o campo Meu Outro Campo!");
meuoutrocampo.grabFocus();
return false;
}
if (meucampodiferente.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Preencha o campo Meu Campo Diferente!");
meucampodiferente.grabFocus();
return false;
}
return true;
}
percebe que consigo validar todos os campos dentro de um único método ?
Sendo assim no momento de persistir o registro bastaria fazer da seguinte maneira:
Você testou o método do Jonathan?
O seu método ele valida todos os campos e só então da um return no final, o correto é deixar o return dentro de um if.
Se o primeiro if for executado, vai aparecer o JOptionPane e depois vai retornar, assim não irá verificar os outros campos.
Quando o return é executado, o método se encerra
Se “descricao” for null, como você irá chamar um método (no caso o método “equals()”) nele? Isso dará NullPointerException não é? Você poderia fazer assim:
public boolean validarDescricao(String descricao) {
if (descricao == null || descricao.isEmpty()) {
JOptionPane.showMessageDialog(null, "Preencha o campo DESCRIÇÃO PRODUTO!");
return false;
}
return true;
}
public boolean validaCamposObrigatorios() {
if (meucampo.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Preencha o campo Meu Campo!");
meucampo.grabFocus();
return false;
}
if (meuoutrocampo.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Preencha o campo Meu Outro Campo!");
meuoutrocampo.grabFocus();
return false;
}
if (meucampodiferente.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Preencha o campo Meu Campo Diferente!");
meucampodiferente.grabFocus();
return false;
}
return true;
}
Acho que o código acima poderia ficar melhor assim:
public boolean validarCamposObrigatorios() {
for (JTextComponent campo : listaDeCamposObrigatorios) {
if (campo.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Preencha o campo '"+campo.getName()+"'!");
campo.grabFocus();
return false;
}
}
return true;
}