Validator - Como funciona?

4 respostas
C

Oi Pessoal, outro dia foi converter…hj é a vez do validator…o caso é que eu preciso fazer um simples validator pra verificar se o campo está vazio e consequentemente exibir a mensagem “Campo Obrigatório”.
Entendo que no jsf devo colocar a seguinte sintaxe:

<h:inputText styleClass="tamanho30" id="nome" value="#{MeuBean.nome}" maxlength="100"  validator="ValidatorNome" />

Fiz uma classe implementando a interface Validator

Segue:

public class ValidatorNome implements Validator {

	@Override
	public void validate(FacesContext facesContext, UIComponent uIComponent, Object obj)
			throws ValidatorException {
	     
		if (ValidarCampo(String.valueOf(obj))) {
		FacesMessage message = MessageUtils.getMessageFromBundle(
		FacesMessage.SEVERITY_WARN, 
		Mensagens.validacao_campoObrigatorio, "Nome");
		FacesContext.getCurrentInstance().addMessage(null, message);
		}	
	}
	
	public boolean ValidarCampo (String campo){
		
		if (campo.trim().isEmpty())
			return true;
		else
			return false;
	}
	
	
}

Fiz o registro no faces-config com o nome da classe e localização no pacote.
Agora quem disse que funciona? A página não está sendo interceptada por esse validator. Falta alguma coisa? Tá certo?

4 Respostas

henriqueluz

Você já debugou pra ter certeza que ele não tá entrando no seu método?

Cola aqui o código do seu faces-config.

Ou tenta colocar assim:

&lt;h:inputText styleClass="tamanho30" id="nome" value="#{MeuBean.nome}" maxlength="100"  /&gt;  
&lt;f:validator validatorId="ValidatorNome" /&gt;
&lt;/h:inputText&gt;

Abraços,

C

funcionou não
:frowning:
Já debuguei tb…não entra no código do validator… :frowning:
segue o trecho do faces.config

<validator>
  <validator-id>ValidatorNome</validator-id>
  <validator-class>br.gov.dataprev.sgir.web.util.validator.ValidatorNome</validator-class>
 </validator>
henriqueluz

Dá uma olhada aqui:

pode ser que ajude!
abs

C

riqueluz:
Dá uma olhada aqui:

pode ser que ajude!
abs

Eu tinha visto esse artigo…entretanto o que achei mto estranho é que o cara colocou a validação no Bean…ele não implementou um validator com a interface e implementou os métodos dela… o que eu não quero é fazer direto no Bean porque se eu precisar em outras páginas vou ter que replicar essa lógica em todos os beans da aplicação.

Criado 20 de julho de 2011
Ultima resposta 20 de jul. de 2011
Respostas 4
Participantes 2