package br.com.caelum.stella.faces.validation;
import javax.el.ELContext;
import javax.el.ValueExpression;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.webapp.ValidatorELTag;
import javax.servlet.jsp.JspException;
/**
* Associa um TLD (Descritor de Biblioteca de Tag) a um validador de CNPJ
* (StellaCNPJValidator).
*
* @author Leonardo Bessa
*/
@SuppressWarnings("serial")
public class StellaCNPJValidatorTag extends ValidatorELTag {
private boolean formatted;
public StellaCNPJValidatorTag() {
super.setId(StellaCNPJValidator.VALIDATOR_ID);
}
/**
* @return StellaCNPJValidator
*/
@Override
protected Validator createValidator() throws JspException {
StellaCNPJValidator validator = new StellaCNPJValidator();
validator.setFormatted(this.formatted);
return validator;
}
/**
* Atribui se a regra de validação deve considerar, ou não, a cadeia no formato do documento.
*
* @param formatted caso seja true o validador considera que a cadeia está formatada;
* caso contrário, considera que a cadeia contém apenas dígitos numéricos.
*
* @see StellaCNPJValidator#setFormatted(boolean)
*
*/
public void setFormatted(ValueExpression formatted) {
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
this.formatted = (Boolean) formatted.getValue(elContext);
}
@Override
public void release() {
super.release();
this.formatted = false;
}
}