Jsf: Limpar campos fomulários sem interferencia do validator

Galera,

Quando clico em Limpar, ele faz as validações dos campos obrigatórios como se fosse um botão de envio. Utilizo um validator próprio.

Utilizei algumas sugestões de colegas do forum como colocar h:commandNutton dentro de um <h:form> separado e adicionar a propriedade immediate=“true”. Com isso de fato ele não faz a validação, mas também não limpa os campos.

Obrigado

Galera segue o meu código:


Na Pagina Jsp:


<h:commandButton
   value="#{Message['msg.consultar']}"
   action="#{cnsTrnFinFormBean.performConsultar}" /> 

<h:commandButton
   value="#{Message['msg.limpar']}" 
   actionListener="#{cnsTrnFinFormBean.limpar}"
/>

beacking bean:


 public String limpar(ActionEvent e)
   {
      campo1 = null;
      campo2 = null;
      dataFinal = new Date();
      dataInicial = new Date();
      

      return null;
   }

Põe o atributo immediate=true no botão, acredito que resolva

O colega, obrigado, mas já tentei, ele não limpa quando coloco esse atributo…

Pessoal, já tentei também colocar os botão limpar dentro de outro <h:form> porém não acontece nada ao clica-lo.

Alguém mais pode me ajudar ?

Tenta colocar um link para essa pagina (a mesma pagina, como um reload). Eu já fiz assim…mas acho q o bean não pode ser de sessao.

[]´s

[quote=humberto.lima]Tenta colocar um link para essa pagina (a mesma pagina, como um reload). Eu já fiz assim…mas acho q o bean não pode ser de sessao.

[]´s

[/quote]

Como assim um link, aonde eu colocaria esse link ?

[quote=efcjunior]

Como assim um link, aonde eu colocaria esse link ?[/quote]

Por exemplo vc esta na pagina form.xhtml, vc cria um link <h:commandLink url=‘form.jsf’> Limpar </h:commandLink>

algo assim…

Amigo eu não entendi bem a sua pergunta mas você quer um botão Limpar? Um reset Html? por que se for isso já que é só pra limpar os campos mesmo põe um html dentro do formulário mesmo, ele limpa os campos sem problema.
Ou vocÊ quer alguma alteração no Backing bean? tipo resetar todas as propriedades dele? E se é isso o imediate=“true” deveria resolver.

[quote=s3v3r1n0]Amigo eu não entendi bem a sua pergunta mas você quer um botão Limpar? Um reset Html? por que se for isso já que é só pra limpar os campos mesmo põe um html dentro do formulário mesmo, ele limpa os campos sem problema.
Ou vocÊ quer alguma alteração no Backing bean? tipo resetar todas as propriedades dele? E se é isso o imediate=“true” deveria resolver.
[/quote]

o cara valeu mesmo, mas é o seguinte, eu preciso de utilizar este botão limpar para resetar o beacking bean. Já utilizei o immediate, mas não limpa…

Vou tentar achar a resposta aqui cara vamos ver.

Ok…Ainda continuo com o mesmo…

Pessoal, me ajudem por gentileza !!! Preciso resolver urgentemente este problema. Jà esgotei as minhas pesquisas no google, meu último recurso são vocês.

Agradeço !

Se o problema é somente limpar os campos do managed bean eu sempre me utilizo de uma command button como:

&lt;h:commandButton value="limpar" action="#{mbean.limpar}" immediate="true" /&gt;

E no managed bean eu simplesmente limpo os campos necessários:

public String limpar() { this.nome = ""; this.listaDeRegistros = null; return null; }

Mas se por algum motivo isso não estiver funcionando com você, -o que eu acharia estranho-, então talvez isso te ajude,
http://wiki.apache.org/myfaces/ClearInputComponents

Abraços e boa sorte.

rponte, agradeço pela tua contribuição…

Eu encontrei neste post http://www.javafree.org/javabb/viewtopic.jbb?t=862576 um problema similar em que foi resolvido pelo colega utilizando virtual form…

Entendi mais ou menos, alguém poderia me dá um exemplo a respeito de virtual form

Galera, eu coloquei a propriedade immediate e ela ignorou as validações porém os campos não estão limpando.

		<h:commandButton
					value="#{Message['msg.consultar']}"
					action="#{cnsTrnFinFormBean.performConsultar}" /> 
				<h:commandButton
					value="#{Message['msg.limpar']}" 
					actionListener="#{cnsTrnFinFormBean.limpar}"
					immediate="true"
					/>

Tenta tbm um type=“submit”

  • o padrao já nao e submit???
    Cara ultima vez que fiz isso so consegui acessando os componentes de input no meo bean.
  • o padrao já nao e submit???
    Cara ultima vez que fiz isso so consegui acessando os componentes de input no meo bean.[/quote]

Como eu posso fazer esse acesso destes componentes, pode me dá um exemplo ?

já usei o submit e reset, também não funcionou…