F:Validator funciona mas não para a execução [RESOLVIDO]

Eu estou tentando fazer a validação de email em um cadastrado de usuário…

quando entro com um email inválido, ele exibe a mensagem de que o email está errado, porém continua a execução e gravação no BD e a mensagem de sucesso tbm…

como corrigir pra interromper a execução, pra gravar somente se o email estiver certo…


package validadores;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
import util.SessionUtil;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailValidator implements Validator {

	@Override
	public void validate(FacesContext context, UIComponent component, Object obj)
			throws ValidatorException {

		String email = (String) obj;

		Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
		Matcher m = p.matcher(email);

		boolean matchFound = m.matches();

		if (!matchFound) {
			SessionUtil.addWarningMessage("EmailInvalido");
		}

	}

}

	<validator>	
		<validator-id>emailValidator</validator-id>
		<validator-class>validadores.EmailValidator</validator-class>
	</validator>
<h:inputText id="email" label="E-mail"
											value="#{usuarioBean.usuario.email}" size="40" maxlength="50"
											required="true">
											<f:validator validatorId="emailValidator" />
										</h:inputText>

Amigão, faltou você lançar a exceção no seu validator. Ok?

if (!matchFound) {   
                
            SessionUtil.addWarningMessage("EmailInvalido");   
             throw new ValidatorException("EmailInvalido"); // você nem precisa do código acima.

        } 

Abraço

opa

fiz quase isso que vc me falou e deu certo… valeu flavio


package validadores;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailValidator implements Validator {

	@Override
	public void validate(FacesContext context, UIComponent component, Object obj)
			throws ValidatorException {
		
		FacesMessage message = new FacesMessage();

		String email = (String) obj;

		Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
		Matcher m = p.matcher(email);

		boolean matchFound = m.matches();

		if (!matchFound) {
			message.setSummary("Email Inválido");			
			throw new ValidatorException(message);
		}

	}

}