publicvoidvalida(FacesContextarg0,UIComponentarg1,Objectarg2)throwsValidatorException{if(pojo.getPersisServ().getNomeServidor().trim().equals("")){FacesMessagemensagem2=newFacesMessage("");mensagem2.setSummary("Nome em Branco.");mensagem2.setSeverity(FacesMessage.SEVERITY_ERROR);thrownewValidatorException(mensagem2);}}
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á …
abraços
Deluxe
mas nao tem como eu deixar o campo em branco e ele chamar o metodo?
sem precisar ter esse required?
M
mackalister
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 …
Deluxe
entendi..
mas agora to com outro problema..
1.publicvoidvalida(FacesContextarg0,UIComponentarg1,Objectarg2)throwsValidatorException{2.if(pojo.getPersisServ().getNomeServidor().trim().equals("")){3.FacesMessagemensagem2=newFacesMessage("");4.mensagem2.setSummary("Nome em Branco.");5.mensagem2.setSeverity(FacesMessage.SEVERITY_ERROR);6.thrownewValidatorException(mensagem2);7.}8.}
minha variavel ta vindo null,
creio que ela vem no UIComponent arg2, como que eu faco pra minha variavel do pojo receber esse valor?
M
mackalister
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 ?
boa sorte
Deluxe
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);
}
}
M
mackalister
nossa … esquece … agora que eu percibi que é parte integrante do codigo … rsrsr
cara … nao sei ao certo, mas pode ser que somente apos validar que o jsf joge a variavel para o objeto desejado …
e sim … vc vai receber o objeto pelo UIComponent …
assim ele recebe o valor…
mas quando eu tiver date, um Long essas coisas ai nao vai ter como…
eu queria saber como que minha variavel recebe o valor…
e quando eu coloco o required=true, quando o campo fica em branco
eles mostra la
Validation erro : value is required.
como eu faco pra mudar isso pra Digite o valor por exemplo?
M
mackalister
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