Validação de inputs no Java

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();

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));
    }
}
3 curtidas

Show! Deu certo!