Criei um xhtml com dois forms, um para informação dos dados e um para consulta.
Ao consultar e tentar editar, até ai ta tudo blz, porem se der algum erro ao gravar (compos requeridos) o form não reseta mais.
Tenho um botão “Gravar” e um “Limpar”, o botão limpar não simplesmente reset o form, mas sim executa um action com o metodo “novoRegistro()” onde instancio um novo objeto. Mas mesmo assim a tela não limpa, continua com os dados da edição anterior.
Obs.: O erro so ocorre quando tento editar e ao gravar falta campo requerido.
Provavelmente o formulário não chega a executar a ação, pois não passa da fase de validação no ciclo jsf. Tente utilizar o atributo immediate que provavelmente irá resolver esse seu problema.
Sugiro uma lida no ciclo de vida de uma requisição jsf, e entender o que o immediate realmente faz, isso vai ser muito util.
Já debugou e viu se o método está sendo chamado??? Olhando aqui, unica coisa que eu consigo pensar era de não ter immediate no commandbutton e ele não passar da fase de validação do jsf.
Outra coisa, posso estar enganado, mas se for chamar alguma action no managed bean, não precisa colocar o metodo com () no final, como na action="#{estadoBean.salvar()}" , apenas action="#{estadoBean.salvar}", tirando casos que vc usa recursos da el para passar algum parametro na chamada do método.
Verifica se isso não está causando alguma problema.
Nesse caso não sei, pode ser algo no update do primefaces, já tive problemas com isso.
Experimenta colocar sem ser ajax, para ver se o formulário é preenchido corretamente( no caso em branco devido a ser um novo objeto). Se funcionar, é algo com o update do primefaces, dai tenta colocar dentro de uma outra div ou componente.
Pois é. Tente o que darkan666 disse. Eu já tive o mesmo problema.
Na época eu descobri que quando eu recarregava a página o formulário limpava. Daí usei o firebug pra ver o id que era montado para o formulário e quando usei o id gerado ele funcionou. Nunca tive problema com isso no richfaces, mas no primefaces é assim. Tem que usar o id gerado pelo fremework.
Use o firebug pra ver como está sendo montado o id do seu formuário.