Qual melhor forma de validar Unique Constraint em JSF?
09/02/2017
0
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.
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.
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)