(Resolvido)limpar o resultado da consulta e os campos do formulário com JSF

Bem pessoal, tenho uma pagina jsf que realiza a consulta e exibe os dados na própria tela. Da maneira abaixo, eu consigo limpar somente o resultado da consulta, mas eu preciso também de limpar os campos do formulário

Alguém pode me dar uma idéia de como resolver este problema .

Pagina Jsf


<form id="consulta">

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

</form>

Bean


   public String limpar()
   {
      new CnsTrnFinFormBean();     

      return null;
   } 

[quote]Então galera, eu agradeço a ajuda de vocês e vou postar aqui a maneira que eu consegui resolver utilizando a fonte de pesquisa google: http://www.josephoneil.com/index.php?option=com_content&task=view&id=19&Itemid=9
[/quote]

1-exemplo.jsf

<h:commandButton
  id="reset"
  value="Limpar" 
  actionListener="#{exemploFormBean.limpar}" immediate="true"/>

2-ExemploFormBean

public String limpar(ActionEvent e)
   {
	   FacesContext facesContext = FacesContext.getCurrentInstance();
	   UIViewRoot uiViewRoot = facesContext.getViewRoot();
	   
	   HtmlInputText inputText = null;	   
	   HtmlSelectOneMenu selectOneMenu=null;
	   DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
	   
	   selectOneMenu = (HtmlSelectOneMenu)uiViewRoot.findComponent("cnsTrnForm:tipo");
	   selectOneMenu.setSubmittedValue("");
	   
	   inputText = (HtmlInputText)uiViewRoot.findComponent("cnsTrnForm:ptaOrigem");
	   inputText.setSubmittedValue("");
	   
	   inputText = (HtmlInputText)uiViewRoot.findComponent("cnsTrnForm:terminal");
	   inputText.setSubmittedValue("");   
	   
	   inputText = (HtmlInputText)uiViewRoot.findComponent("cnsTrnForm:dataInicial");
	   inputText.setSubmittedValue(format.format(new Date()));
	   
	   inputText = (HtmlInputText)uiViewRoot.findComponent("cnsTrnForm:dataFinal");
	   inputText.setSubmittedValue(format.format(new Date()));	  
	   	   
	   return null;
   }

Um abraço !

Ola… tenta assim:

document.getElementById("seuFormulario").reset();

[quote=alves.Felipe]Ola… tenta assim:

document.getElementById("seuFormulario").reset();

Como asim, não entendi ?

cria o botao limpar, e quando clikar nele, chamar a mesma pagina que vai limpar os campos

Cria o javaScript:

<script type="text/javascript">

//LIMPA UM FORMULARIO
function limparFormulario(parametro)
{
	document.getElementById(parametro).reset();	
}
</script>

e cria uma ação que chame a função limparFormulario passando o id de seu formulario

<input type="button" value="Limpar" id="limpar" onclick="limparFormulario('idDeSeuFormulario');"/>

entendeu?!

nesse teu botao:
<h:commandButton
value="#{Message[‘msg.limpar’]}"
action="#{cnsTrnFinFormBean.limpar}"
immediate=“true”/>

crie um metodo tipo

public void limpar(){
this.setNome(null);
}

fui

nesse teu botao:
<h:commandButton
value="#{Message[‘msg.limpar’]}"
action="#{cnsTrnFinFormBean.limpar}"
immediate=“true”/>

crie um metodo tipo

public void limpar(){
this.setNome(null);
}

fui

1-Felipe e colega entendi a sugestão abaixo do colega como também a implementei. Porém com esta eu consigo limpar os campos antes de realizar a consulta, porque após realiza-la, eu clico no botão limpar e não acontece nada.

Cria o javaScript:

<script type="text/javascript">

//LIMPA UM FORMULARIO
function limparFormulario(parametro)
{
	document.getElementById(parametro).reset();	
}
</script>

e cria uma ação que chame a função limparFormulario passando o id de seu formulario

<input type="button" value="Limpar" id="limpar" onclick="limparFormulario('idDeSeuFormulario');"/>

entendeu?!
[/quote]

2- A sugestão do colega de setar null para os campos já existe. Acontece com esta soluçaõ eu consigo apenas limpar a tabela pesquisa agora os campos do formulário não

Se alguém puder contribuir eu agradeço.

Tentei fazer assim, mas acontece o seguinte: Antes da pesquisa limpar o formulário se o digitar qualquer coisa, mas
após a consulta, quando clico em limpar ele retira a tabela pesquisa mas não reseta o formulário.

efcjunior
O caso é que o reset em um formulário html não é para limpar os campos e sim para fazer com que eles voltem ao seu valor inicial, que estava no value do html.

Da primeira vez limpa porque não havia nada. Mas da segunda não limpa porque a página já foi carrega com dados no value. Experimente alterar algum campo e resetar e vc verá que ele retorna para o que estava quando a página foi carregada.

Uma solução seria criar uma função javascript chamada limparCampos() por exemplo que sai pegando todos os inputs e setando ‘’ no value…

Pode fazer dentro de um for nos itens do formulário ou setando individualmente, se for o caso…

[quote=renatocustodio]efcjunior
O caso é que o reset em um formulário html não é para limpar os campos e sim para fazer com que eles voltem ao seu valor inicial, que estava no value do html.

Da primeira vez limpa porque não havia nada. Mas da segunda não limpa porque a página já foi carrega com dados no value. Experimente alterar algum campo e resetar e vc verá que ele retorna para o que estava quando a página foi carregada.

Uma solução seria criar uma função javascript chamada limparCampos() por exemplo que sai pegando todos os inputs e setando ‘’ no value…

Pode fazer dentro de um for nos itens do formulário ou setando individualmente, se for o caso…

[/quote]

Renato, faz muito sentido o que você falou…É possível me dar um exemplo de como eu implemento esta função, você já tem essa função ?

Obrigado.

Só lembrando que o meu form é implementado em jsf, não sei se é possível setar valores…

Bom, para fazer de forma automática deve ser fácil, e se pesquisar sobre uma função javascript prota deve achar aos montes na internet…

A forma manual seria algo como

document.getElementById('textFieldNome').value = '';

E assim com todos os seus outros campos. Não sei de cabeça como se faz com javascript para ir pegando todos e setando uma string vazia automatica. Experimenta dar um “for in” pra ver. Ou procure uma pronta.

Seja ele jsf ou não, no final ele vai gerar html nu e crú. E é isso que o javascript enxerga.

Seja ele jsf ou não, no final ele vai gerar html nu e crú. E é isso que o javascript enxerga.[/quote]

Legal,mas eu tenho mais um problema eu tenho dois campos datas que são sempre reinicializado com a data atual…Como setaria esta atual ?

Bom, tem duas opções:

Setar lá dentro a dataAtual com javascript, pegando dessa forma a data da máquina do client.

Ou quando carregar a página jogar a dataAtual dentro de um campo hidden usando programação java mesmo, que pode er colado usando alguma tag de data, jstl, scriptles,etc… Então na função que reseta pegar com javascript essa valor e simplesmente jogar nesse campo.

[quote=renatocustodio]Bom, tem duas opções:

Setar lá dentro a dataAtual com javascript, pegando dessa forma a data da máquina do client.

Ou quando carregar a página jogar a dataAtual dentro de um campo hidden usando programação java mesmo, que pode er colado usando alguma tag de data, jstl, scriptles,etc… Então na função que reseta pegar com javascript essa valor e simplesmente jogar nesse campo. [/quote]

<script type="text/javascript">
					function limparFormulario(parametro)  
					{  
     					document.getElementById('ptaOrigem').value = '';
     					document.getElementById('terminal').value = '';  
     				}						
				</script>

<h:commandButton
							value="#{Message['msg.limpar']}" 
							action="#{cnsTrnFinFormBean.limpar}"
							onclick="limparFormulario('cnsTrnForm');"							
							immediate="true"/>

Cara não funcionou, os campos continuaram com os mesmos valores.

tem certeza que é mesmo ptaOrigem e terminal os IDs gerados no html?

Qual erro que apareceu no navegador ao executar o javascript?

Outra coisa, nesse caso não precisa passar parametro nenhum para a função, porque não ta usando ele lá dentro mesmo.(mas não é isso que atrapalou, só que tbm não vai ajudar)

Obrigado galera pela ajuda !!!