4
respostas

Mascara para validação

por favor, alguém saberia me dizer como faço máscara de validação de CPF, CNPJ, telefone, CEP, e-mail com Spring MVC? tem alguma anotation que faça isso?

Obrigada.

4 respostas

Olá Lilian tudo bem?

O Spring só ira fazer as validações do lado do servidor(back-end) não irá gerar mascaras ou validações no lado do cliente (front-end).

Para fazer essas validações você pode utilizar alguma implementação da especificação de beans validationcomo o Hibernate Validator (por exemplo), desta forma você pode anotar seus atributos das suas classes de modelo com as seguintes anotações:

  • @Email,
  • @CPF,
  • @CNPJ

Para CEP e Telefone você pode usar a anotação @Pattern que recebe uma expressão regular: @Pattern("\\d{5}-\\d{3}) para cep, @Pattern("(\\d{2}) \\d{4}-\\d{4}") para telefone.

Porém essa validação será executada no back-end não vai colocar nenhuma mascara no front-end.

Para colocar validações no front-end você pode usar o atributo pattern das tags input e declarar o padrão nela.

E se você precisar de mascara nos campos você pode usar alguma biblioteca como por exemplo jquery-mask.

Espero ter ajudado!

Fernando, obrigada!

estou usando as anotations conforme me falou,

no front, acontece a validação do CNPJ e Email igual o curso ensinou da data, simplesmente ele apresenta a mensagem de CNPJ ou e-mail inválido, isso mesmo que eu quero!

Mais para o CPF o que deveria acontecer o mesmo, ele está apresentando uma exception em tela:

HTTP Status 500 - Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [br.com.projeto.cuidandodaatencao.model.Professor] during persist time for groups [javax.validation.groups.Default, ]

type Exception report

message Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [br.com.projeto.cuidandodaatencao.model.Professor] during persist time for groups [javax.validation.groups.Default, ]

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [br.com.projeto.cuidandodaatencao.model.Professor] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='CPF inválido', propertyPath=CPF, rootBeanClass=class br.com.projeto.cuidandodaatencao.model.Professor, messageTemplate='{org.hibernate.validator.constraints.br.CPF.message}'}
]

há um outro método de fazer com que essa exception seja tratada como uma mensagem pelo front end?

obs.: também utilizei o input pattern como me indicou e acontece a mesma coisa.

Obrigada

Olá Lilian tudo bem?

Que bom que algumas coisa já funcionaram,

Tem como você postar o código aqui para eu tentar entender melhor o que está ocorrendo no código?

Olá Fernando, tudo bem e você?

a mensagem apresentada está correta, pois está validando o CPF, porém também não valida no front como o CNPJ e e-mail

segue um pedaço da JSP:

<div class="form-group">
            <label>C.P.F</label>            
            <form:input  path="CPF" cssClass="form-control" />
            <form:errors path="CPF" />
        </div>

classe POJO professor

@CPF
    private String CPF;

mensagem apresentada :

HTTP Status 500 - Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [br.com.projeto.cuidandodaatencao.model.Professor] during persist time for groups [javax.validation.groups.Default, ]

type Exception report

message Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [br.com.projeto.cuidandodaatencao.model.Professor] during persist time for groups [javax.validation.groups.Default, ]

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [br.com.projeto.cuidandodaatencao.model.Professor] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='CPF inválido', propertyPath=CPF, rootBeanClass=class br.com.projeto.cuidandodaatencao.model.Professor, messageTemplate='{org.hibernate.validator.constraints.br.CPF.message}'}
]

sobre o telefone... quando insiro o pattern na jsp, no front está aparecendo a mensagem padrão do HTML 5 "é preciso que o formato corresponda ao exigido", quando digito o padrão correto, qualquer padrão de telefone não é identificado

ocorre o mesmo para o cep.

JSP:

<div class="form-group">
            <label>Telefone</label>
            <form:input path="telefone" pattern="(\\d{2})\\d{4}-\\d{4}$" cssClass="form-control" />
            <form:errors path="telefone" />

         </div>

classe POJO professor:

@Pattern(regexp="(\\d{2})\\d{4}-\\d{4}$")
    private String telefone;

Obrigada