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.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.
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