Validação de inputs no Java

2 respostas
java
C

Estou precisando validar uns 10 inputs para quando estiverem nulos ou vazios retornar erro, mas ao invés de retornar um erro de cada vez, preciso pegar os erros e ir concatenando na StringBuilder erros, acredito que o if/else não seja a melhor forma para isso. Alguem pode me dar uma ideia?

StringBuilder erros = new StringBuilder();/*Aqui ficaria os erros e so depois eu iria retornar todos concatenados*/

if (responsavel.getNome() == null || responsavel.getNome().trim().equals("")) {
    erros = erros.append(Constantes.getProperty("msg.erro.nome.responsavel"));
}else if(responsavel.getCpf() == null || responsavel.getCpf().trim().equals("")) {
    erros.append(Constantes.getProperty("msg.erro.cpf.responsavel"));
}

return erros.toString();

2 Respostas

pmlm

Se queres concatenar todos os erros, o else de certeza que não deves usar senão só irás apanhar o primeiro erro (não entrando depois em mais nenhum else)

Podes simplesmente fazer ifs:

if (responsavel.getNome() == null || responsavel.getNome().trim().equals("")) {
    erros = erros.append(Constantes.getProperty("msg.erro.nome.responsavel"));
}
if(responsavel.getCpf() == null || responsavel.getCpf().trim().equals("")) {
    erros.append(Constantes.getProperty("msg.erro.cpf.responsavel"));
}
(...)

Ou, se todas as validações forem semelhantes, podes criar um método auxiliar:

(...)
  validate(erros, responsavel.getNome(), "msg.erro.nome.responsavel");
  validate(erros, responsavel.getCpf(), "msg.erro.cpf.responsavel");
  (...)


private void validate(StringBuilder errors, String field, String errorKey) {
    if (field == null || field.trim().equals("")) {
        errors.append(Constantes.getProperty(errorKey));
    }
}
C

Show! Deu certo!

Criado 18 de maio de 2021
Ultima resposta 19 de mai. de 2021
Respostas 2
Participantes 2