pelo que eu entendi ele so esta chamando o validator quando vc preenche o campo certo?
bom se for somente isso … acho que esta tudo certo… o que vc precisa falar é que o campo é de preenchimento obrigatorio… colocando a tag required=“true”
por sinal … como vc ja usar jsf poderia me ajudar e dizer como vc esta fazendo para verificar se o usuario esta logado antes de abrir as paginas jsf ?
nao estou conseguindo bolar uma forma de fazer esta verificação…
em struts eu fazia por superclasse … mas em jsf … nao dá …
cara nao sou um profundo conhecedor, mas pelo que eu entendi… se nao tiver nada no campo a variavel nem é enviada … por isto nao é chamado o validator …
colocando o required, o seu form nao vai conseguir ser enviado sem o preenchimento do campo…
se vc tiver usando algum framework ajax (ICEfaces por exemplo) , isto fica muito bom … pois quando vc deixa o campo … ja é feita a validação e lanca a mensagem de erro. estou adorando trabalhar com ICEfaces … muito simple e pratico …
cara , nao entendi seu problema agora… quando esta ocorrendo o problema ? no validator ? esta lançando alguma exception ?
qual a ligação entre os dois trechos de codigo que vc postou ?
eu preenchi o campo blz,
ai ele chama o metodo, na linha em negrito minha variavel ta vindo null, assim da uma nullPointer por tentar usar um trim() nela…
essa variavel minha nao deveria ter o valor do campo que eu digitei?
public void valida(FacesContext arg0, UIComponent arg1, Object arg2)throws ValidatorException {
[b] if(pojo.getPersisServ().getNomeServidor().trim().equals("") ){ [/b]
FacesMessage mensagem2 = new FacesMessage("");
mensagem2.setSummary("Nome em Branco.");
mensagem2.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(mensagem2);
}
}
Cara …
me me corrijam por favor se eu estiver errado, mas geralmente, quando vc faz o binding do atributo, quando vc esta lá no metodo que recebe o submit as variaves ja estão preenchidas, voce nao deve setar ela manualmente no metodo validator, pios este é o trabalho do framework.
O validator é uma forma de garantir que sua variavel nao será setada com valores indevidos, logo nao me parece razoavel que neste momento seu atributo ja esteja setado na variavel.
faz o teste e verifica se realmente nao esta sendo enviado o valor para o atributo, porém verifica isso no metodo que vc recebe o submit da sua pagina.
<f:commandButton action="#{algum.metodo}"/>
o metodo é o que vc colocou na variavel action no componente commandbutton
como mudar a mensagem eu ainda nao sei . estou aprendendo a usar este framework ainda .
mas eu posto aki
abracos