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.
R
rickcs
ja tentei, veja abaixo como está o codigo:
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><ui:compositionxmlns="http://www.w3.org/1999/xhtml"xmlns:p="http://primefaces.prime.com.tr/ui"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"template="../template/paginapadrao.xhtml"><ui:debug/><ui:definename="corpo"><p:tabViewid="tabcontrol"widgetVar="tabCad"><p:tabtitle="Cadastro"><h:formid="frmCad"prependId="false"><p:panelid="pnl"header="Cadastro de Estado"><p:focus/><h:panelGridcolumns="3"><h:outputTextvalue="Operação"/><p:inputTextid="operacao"style="color: black; background-color: LightBlue; text-align: center"disabled="true"value="#{estadoBean.operacao}"/><p:messagefor="operacao"/><h:outputTextvalue="* Descrição"/><p:inputTextid="descricao"value="#{estadoBean.estado.descricao}"required="true"maxlength="50"size="50"requiredMessage="Campo obrigatório"/><p:messagefor="descricao"/><h:outputTextvalue="* UF"/><p:inputTextid="uf"value="#{estadoBean.estado.uf}"required="true"maxlength="2"requiredMessage="Campo obrigatório"></p:inputText><p:messagefor="uf"/><h:outputTextvalue="Código IBGE:"/><p:inputTextid="codibge"value="#{estadoBean.estado.codibge}"converterMessage="Conteúdo do campo inválido (somente números)"maxlength="7"><f:convertNumberintegerOnly="true"groupingUsed="false"/></p:inputText><p:messagefor="codibge"/><h:outputTextvalue="* Pais:"/><h:selectOneMenuid="pais"required="true"requiredMessage="Campo obrigatório"value="#{estadoBean.paisIDSelecionado}"><f:selectItemitemLabel="Selecione um país"/><f:selectItemsvalue="#{paisBean.paises}"var="p"itemLabel="#{p.descricao}"itemValue="#{p.id}"/></h:selectOneMenu><p:messagefor="pais"/></h:panelGrid><f:facetname="footer"><p:commandButtonvalue="Gravar"action="#{estadoBean.salvar()}"update="frmCad, alertas, frmGrid"/><p:commandButtonvalue="Limpar"immediate="true"action="#{estadoBean.novoRegistro()}"update="frmCad"/></f:facet></p:panel></h:form><h:form></h:form></p:tab><p:tabtitle="Pesquisa"><h:formid="frmGrid"><p:panelid="pnlGrid"header="Estados cadastrados"><p:dataTableid="grid"var="e"value="#{estadoBean.estados}"paginator="true"selection="#{estadoBean.estado}"selectionMode="single"emptyMessage="#{constantesBean.constanteSemRegistro}"rows="10"paginatorAlwaysVisible="false"paginatorPosition="top"><p:columnheaderText="Nome"filterBy="#{e.descricao}"sortBy="#{e.descricao}"><h:outputTextvalue="#{e.descricao}"/></p:column><p:columnheaderText="UF"filterBy="#{e.uf}"sortBy="#{e.uf}"><h:outputTextvalue="#{e.uf}"/></p:column><p:columnheaderText="Código IBGE"filterBy="#{e.codibge}"sortBy="#{e.codibge}"><h:outputTextvalue="#{e.codibge}"/></p:column><p:columnheaderText="País"filterBy="#{e.pais.descricao}"sortBy="#{e.pais.descricao}"><h:outputTextvalue="#{e.pais.descricao}"/></p:column><p:columnstyle="width:60px"><p:commandButtonimage="ui-icon-pencil"styleClass="botoesGrid"update="frmCad, tabcontrol"process="@this"><f:setPropertyActionListenertarget="#{estadoBean.estado}"value="#{e}"/></p:commandButton><p:commandButtonimage="ui-icon-circle-close"styleClass="botoesGrid"update="grid"process="@this"onclick="confirmarDelete.show()"><f:setPropertyActionListenertarget="#{estadoBean.estado}"value="#{e}"/></p:commandButton></p:column></p:dataTable><h:panelGridcolumns="2"cellspacing="10"><p:commandLinkvalue="Atualizar"action="#{estadoBean.novaPesquisa()}"update="grid"/><h:commandLinkvalue="Exportar para Excel"type=""><p:dataExportertype="xls"target="grid"fileName="estados"excludeColumns="3,4"/></h:commandLink></h:panelGrid></p:panel></h:form></p:tab></p:tabView><p:confirmDialogheader="Confirmação"message="Confirma exclusão do registro?"appendToBody="true"modal="true"showEffect="explode"widgetVar="confirmarDelete"severity="alert"><h:form><p:commandButtonvalue="Sim"actionListener="#{estadoBean.deletar()}"update="frmGrid, alertas"onsuccess="confirmarDelete.hide()"></p:commandButton><p:commandButtonvalue="Não"oncomplete="confirmarDelete.hide()"/></h:form></p:confirmDialog></ui:define></ui:composition>
J
jaziel.rc
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.
R
rickcs
Ja debuguei sim, o metodo é executado.
Ta tudo funcionando, mas se der erro ao gravar, não limpa mais.
Sobre o metodo ter () ao final, não tem problema, funciona das duas formas.
Vou estudar mais pra ver o que pode ta errado.
vlw
J
jaziel.rc
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.
A
adilson_atalla
Fala rickcs tudo bom?
Cara estou com o mesmo problema que você.
Você conseguiu solucionar este problema?
Obrigado,
Adilson
D
darkan666
adilson_atalla:
Fala rickcs tudo bom?
Cara estou com o mesmo problema que você.
Você conseguiu solucionar este problema?
Obrigado,
Adilson
no botão ou commandlink q vc está usando pra fechar, limpar ou cancelar uma ação… coloque o atributo:
immediate="true"
e use o
update=":seuForm"
ou
update="seuForm"
depende da versão do JSF
comigo funcionou assim
M
marlonmca
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.