Qual melhor forma de validar Unique Constraint em JSF?

MySQL

Java

09/02/2017

Ola,

Tenho alguns campos unique no banco de dados, email, cpf e cnpj por exemplo. Nao estava fazendo validacao caso estivesse repetido, o sistema simplesmente parava e nao mostrava nenhuma mensagem. Entao fiz um validador de email.

public void validateEmail(FacesContext context, UIComponent toValidate, Object value) {
     
        String email = (String) value;
        Usuario validaUsuario = usuarioService.findByEmail(email);
        if (validaUsuario != null) {
            ((UIInput) toValidate).setValid(false);
            FacesUtil.adicionarMensagemErro("Ja existe usuário cadastrado com esse email.", null);
        }
    }


Essa validacao esta funcionando. Ao inves de tratar a exception MysqlIntegrityConstraint.... pois nao consegui via try/catch. Eu consulto se o email ja existe e disparo o erro. Acontece é que se eu estiver editando uma entidade ja cadastrada ele nao valida o campo.

Nesse caso qual seria a melhor forma de validar ?

Deixar sem validator, na pagina e colocar esse teste na classe service? Eu gostei do validador na pagina, pq ele ja pinta de vermelho os campos invalidos do formulario.
Eu pensei em recuperar o componente UIInput com o ID, e acrescentalido no IF do validador, mas nao consegui. qual medoto do FacesContext.getViewRoot() eu utilizo para recuperar o componente passando o ID dele? tentei alguns mas sem sucesso.
Thiago Moreno

Thiago Moreno

Curtidas 0
POSTAR