Fazer managed bean retornar uma string em vez de uma pagina

8 respostas
F

Ai gente blz,

tenho uma aplicação web com Hibernate e JSF, toda vez que ele grava, exclui ou edita uma informação no banco de dados ele retorna uma pagina xhtml, caso a informação seja gravada com sucesso, ele retorna a pagina sucesso.xhtml, caso ele nao consiga gravar a informação ele vai para a pagina erro.xhtml, é possivel modificar este comportamento, em vez dele mudar a pagina apenas para exibir o resultado do processamento do managed bean, ele poderia simplesmente mostrar uma string dizendo "Informação gravada com sucesso" ou "Falha ao gravar informação" ?

sucesso.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:rich="http://richfaces.org/rich">
<h:head><title>Curriculo Salesianos</title>
</h:head>
<h:body>
<div align="center">
<h1>Operação realizada com sucesso</h1>

<hr/>
<a href="inicio.jsf">Retornar a página Principal</a>

<fieldset>
<legend>Curriculo Salesiano</legend>
<h:form>


  <h:commandButton value="cidade" action="cadastro_cidade" />
  <br />
  <h:commandButton value="estado" action="cadastro_estado" />
  <br />
  <h:commandButton value="inspetoria" action="cadastro_inspetoria" />
  <br />
  <h:commandButton value="familia_salesiana" action="cadastro_familia_salesiana" />
  <br />
  <h:commandButton value="comunidade" action="cadastro_comunidade" />
  <br />
  <h:commandButton value="obra" action="cadastro_obra" />
  <br />
  <h:commandButton value="hist_com_obr" action="cadastro_hist_com_obr" />
  <br />
  <h:commandButton value="pessoas" action="cadastro_pessoas" />
  <br />
  <h:commandButton value="salesianos" action="cadastro_salesianos" />
  <br />
  <h:commandButton value="separacao" action="cadastro_separacao" />
  <br />
  <h:commandButton value="hist_separacao" action="cadastro_hist_separacao" />
  <br />
  <h:commandButton value="parentesco" action="cadastro_parentesco" />
  <br />
  <h:commandButton value="eventos" action="cadastro_eventos" />
  <br />
  <h:commandButton value="hist_eventos" action="cadastro_hist_eventos" />
  <br />
  <h:commandButton value="curso_especializado" action="cadastro_curso_especializado" />
  <br />
  <h:commandButton value="hist_cur_esp" action="cadastro_hist_cur_esp" />
  <br />
  <h:commandButton value="sacramento_ministerio" action="cadastro_sacramento_ministerio" />
  <br />
  <h:commandButton value="hist_sac_min" action="cadastro_hist_sac_min" />
  <br />
  <h:commandButton value="diocese" action="cadastro_diocese" />
  <br />
  <h:commandButton value="bispos" action="cadastro_bispos" />
  <br />
  <h:commandButton value="paroquia" action="cadastro_paroquia" />
  <br />
  <h:commandButton value="hist_dio_bis" action="cadastro_hist_dio_bis" />
  <br />
  <h:commandButton value="formacao_religiosa" action="cadastro_formacao_religiosa" />
  <br />
  <h:commandButton value="hist_for_rel" action="cadastro_hist_for_rel" />
  <br />
  <h:commandButton value="sistemas" action="cadastro_sistemas" />
  <br />
  <h:commandButton value="cargo" action="cadastro_cargo" />
  <br />
  <h:commandButton value="hist_comissao" action="cadastro_hist_comissao" />
  <br />
  <h:commandButton value="profissoes" action="cadastro_profissoes" />
  <br />
  <h:commandButton value="hist_profissoes" action="cadastro_hist_profissoes" />
  <br />
  <h:commandButton value="tipo_producao" action="cadastro_tipo_producao" />
  <br />
  <h:commandButton value="producao_intelectual" action="cadastro_producao_intelectual" />
  <br />
  <h:commandButton value="graduacao" action="cadastro_graduacao" />
  <br />
  <h:commandButton value="hist_graduacao" action="cadastro_hist_graduacao" />
  <br />
  <h:commandButton value="hist_comunidade" action="cadastro_hist_comunidade" />
  <br />
  <h:commandButton value="hist_sal_obr" action="cadastro_hist_sal_obr" />
  <br />
  <h:commandButton value="testeSelect" action="testeSelect" />
  <br />

  <h:commandButton value="listar_estado" action="listar_estado" />precisa ser verificado por causa do selectOneMenu
  <br/>
  <h:commandButton value="listar_tablea_extendida" action="listar_tablea_extendida" />precisa ser verificado por causa do selectOneMenu
  <br/>


  <h:commandButton value="layout" action="layout" />
  <br/>




  <br />
  Gerar tabela no banco de dados
  <h:commandButton value="Gravar" action="#{geraTabelasnoBanco.gerar}" />
  <br/>


</h:form>

</fieldset>

</div></h:body></html>

erro.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:rich="http://richfaces.org/rich">
<h:head><title>Curriculo Salesianos</title>
</h:head>
<h:body>
<div align="center">
<h1>Erro, entre em contato com o administrador do sistema<br/>
    e peça que seja verificado o log do servidor</h1>

    <a href="inicio.jsf">Retornar a página Principal</a>

<hr/>

<fieldset>
<legend>Curriculo Salesiano</legend>
<h:form>


  <h:commandButton value="cidade" action="cadastro_cidade" />
  <br />
  <h:commandButton value="estado" action="cadastro_estado" />
  <br />
  <h:commandButton value="inspetoria" action="cadastro_inspetoria" />
  <br />
  <h:commandButton value="familia_salesiana" action="cadastro_familia_salesiana" />
  <br />
  <h:commandButton value="comunidade" action="cadastro_comunidade" />
  <br />
  <h:commandButton value="obra" action="cadastro_obra" />
  <br />
  <h:commandButton value="hist_com_obr" action="cadastro_hist_com_obr" />
  <br />
  <h:commandButton value="pessoas" action="cadastro_pessoas" />
  <br />
  <h:commandButton value="salesianos" action="cadastro_salesianos" />
  <br />
  <h:commandButton value="separacao" action="cadastro_separacao" />
  <br />
  <h:commandButton value="hist_separacao" action="cadastro_hist_separacao" />
  <br />
  <h:commandButton value="parentesco" action="cadastro_parentesco" />
  <br />
  <h:commandButton value="eventos" action="cadastro_eventos" />
  <br />
  <h:commandButton value="hist_eventos" action="cadastro_hist_eventos" />
  <br />
  <h:commandButton value="curso_especializado" action="cadastro_curso_especializado" />
  <br />
  <h:commandButton value="hist_cur_esp" action="cadastro_hist_cur_esp" />
  <br />
  <h:commandButton value="sacramento_ministerio" action="cadastro_sacramento_ministerio" />
  <br />
  <h:commandButton value="hist_sac_min" action="cadastro_hist_sac_min" />
  <br />
  <h:commandButton value="diocese" action="cadastro_diocese" />
  <br />
  <h:commandButton value="bispos" action="cadastro_bispos" />
  <br />
  <h:commandButton value="paroquia" action="cadastro_paroquia" />
  <br />
  <h:commandButton value="hist_dio_bis" action="cadastro_hist_dio_bis" />
  <br />
  <h:commandButton value="formacao_religiosa" action="cadastro_formacao_religiosa" />
  <br />
  <h:commandButton value="hist_for_rel" action="cadastro_hist_for_rel" />
  <br />
  <h:commandButton value="sistemas" action="cadastro_sistemas" />
  <br />
  <h:commandButton value="cargo" action="cadastro_cargo" />
  <br />
  <h:commandButton value="hist_comissao" action="cadastro_hist_comissao" />
  <br />
  <h:commandButton value="profissoes" action="cadastro_profissoes" />
  <br />
  <h:commandButton value="hist_profissoes" action="cadastro_hist_profissoes" />
  <br />
  <h:commandButton value="tipo_producao" action="cadastro_tipo_producao" />
  <br />
  <h:commandButton value="producao_intelectual" action="cadastro_producao_intelectual" />
  <br />
  <h:commandButton value="graduacao" action="cadastro_graduacao" />
  <br />
  <h:commandButton value="hist_graduacao" action="cadastro_hist_graduacao" />
  <br />
  <h:commandButton value="hist_comunidade" action="cadastro_hist_comunidade" />
  <br />
  <h:commandButton value="hist_sal_obr" action="cadastro_hist_sal_obr" />
  <br />
  <h:commandButton value="testeSelect" action="testeSelect" />
  <br />

  <h:commandButton value="listar_estado" action="listar_estado" />precisa ser verificado por causa do selectOneMenu
  <br/>
  <h:commandButton value="listar_tablea_extendida" action="listar_tablea_extendida" />precisa ser verificado por causa do selectOneMenu
  <br/>


  <h:commandButton value="layout" action="layout" />
  <br/>




  <br />
  Gerar tabela no banco de dados
  <h:commandButton value="Gravar" action="#{geraTabelasnoBanco.gerar}" />
  <br/>


</h:form>

</fieldset>

</div></h:body></html>

cadastro_estado.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"      
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:head><title>Curriculo Salesiano</title>
        <link rel="stylesheet" type="text/css" href="css/principal.css" />
        <script type="text/javascript" src="js/jquery-1.5.2.min.js"/>
        <script type="text/javascript" src="js/corTabela.js"/>
        <script language="JavaScript">
        function function1(elem) {
                var c = elem.innerHTML;		
                var d = elem.childNodes[0].innerHTML;
                var e = elem.childNodes[1].innerHTML;
                var f = elem.childNodes[2].innerHTML;
                //alert(c+"-"+d+"-"+e+"-"+f)
                document.getElementById("FormEstado:idEstado").value=d;
                document.getElementById("FormEstado:idEstadoOculto").value=d;
                document.getElementById("FormEstado:siglaEstado").value=e;
                document.getElementById("FormEstado:nomeEstado").value=f;
        }
        </script>       
    </h:head>
    <h:body>
        <div align="center">
            <h1>Estados</h1>

            <rich:panel header="Cadastro" >

                <h:form id="FormEstado">                  

                    <table id="cadastro">
                        <tr>
                            <td align="right">ID Estado:</td>
                            <td><h:inputText id="idEstado"  readonly="true" value="#{gravaEstado.est_id}" binding="#{gravaEstado.idEstado}" /></td>
                        </tr>
                        <tr>
                            <td align="right">Sigla Estado:</td>
                            <td><h:inputText id="siglaEstado" maxlength="2" value="#{gravaEstado.est_sigla}" binding="#{gravaEstado.siglaEstado}" required="true" requiredMessage="O campo SiglaEstado deve ser preenchido" />
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2"><h:message  styleClass="mensagemErro" for="siglaEstado" /></td>
                        </tr>
                        <tr>
                            <td align="right">Nome do estado:</td>
                            <td><h:inputText id="nomeEstado" value="#{gravaEstado.est_nome}" binding="#{gravaEstado.nomeEstado}" required="true" requiredMessage="O campo NomeEstado deve ser preenchido"/></td>                            
                        </tr>
                        <tr>
                            <td colspan="2"><h:message styleClass="mensagemErro" for="nomeEstado" /></td>
                        </tr>
                    </table>

                    <h:inputHidden id="idEstadoOculto" value="#{gravaEstado.est_id}" binding="#{gravaEstado.idEstadoOculto}" />


                    <h:commandButton action="#{gravaEstado.limpar}" value="Limpar"/>
                    &nbsp;&nbsp;
                    <h:commandButton value="Gravar" action="#{gravaEstado.gravar}" />
                    &nbsp;&nbsp;                    
                    <h:commandButton value="Excluir" action="#{gravaEstado.excluir}" />


                </h:form>
            </rich:panel>
            <br/>

            <br/>
            <rich:panel header="Pesquisa" >
                <h:form>
                    <h:inputText value="#{listaEstado.est_nom}" />
                    <a4j:commandButton value="Pesquisar" render="out" action="#{listaEstado.filtrar}" />
                    <br/><br/>

                </h:form>
                <a4j:outputPanel id="out">
                    <table border="1">
                        <tr>
                            <td>ID</td>
                            <td>Sigla</td>
                            <td>Estado</td>
                        </tr>
                        <a4j:repeat value="#{listaEstado.suaLista}" var="x">
                            <tr onclick="function1(this)"><td>#{x.est_id}</td><td>#{x.est_sigla}</td><td>#{x.est_nom}</td></tr>
                        </a4j:repeat>
                    </table>

                </a4j:outputPanel>
            </rich:panel>
            <h2><a href="inicio.jsf">Retornar a pagina Principal</a></h2>
            <br/>


        </div></h:body></html>

GravaEstado.java

package br.salesianos.db;

import br.salesianos.modelo.Estado;
import javax.faces.bean.ManagedBean;
import javax.faces.component.html.HtmlInputHidden;
import javax.faces.component.html.HtmlInputText;
import org.apache.commons.lang.WordUtils;
import org.hibernate.*;
import javax.faces.bean.ManagedBean;

@ManagedBean
public class GravaEstado {

    private Integer est_id;    
    private String est_nome;
    private String est_sigla;
    private HtmlInputText idEstado;
    private HtmlInputText nomeEstado;
    private HtmlInputText siglaEstado;
    private HtmlInputHidden idEstadoOculto;
    private Session sessao = CriadorDeSessaoNovo.getSession();
    private Transaction tx = sessao.beginTransaction();

    public void limpar() {        
        getIdEstado().setValue("");
        getNomeEstado().setValue("");
        getSiglaEstado().setValue("");
        getIdEstadoOculto().setValue("");
    }

    public String gravar() {
        //Session sessao = CriadorDeSessao.getSession();

        try {
            Estado obj_estado = new Estado();

            if (getEst_id() != 0) {
                //System.out.println("É sim2");
                obj_estado.setEst_id(getEst_id());
            }

            obj_estado.setEst_nom(WordUtils.capitalizeFully(getEst_nome()));
            obj_estado.setEst_sigla(getEst_sigla().toUpperCase());

            sessao.saveOrUpdate(obj_estado);

            tx.commit();
            sessao.close();
            return "sucesso";

        } catch (Exception erro) {

            System.out.println("Problema : " + erro);
            tx.rollback();
            sessao.close();
            return "erro";
        }
    }

    public String excluir() {

        try {
            Estado obj_estado = new Estado();
            obj_estado.setEst_id(getEst_id());

            sessao.delete(obj_estado);

            tx.commit();
            sessao.close();
            return "sucesso";

        } catch (Exception erro) {

            System.out.println("Problema : " + erro);
            tx.rollback();
            sessao.close();
            return "erro";
        }
    }

    /**
     * @return the est_id
     */
    public Integer getEst_id() {
        return est_id;
    }

    /**
     * @param est_id the est_id to set
     */
    public void setEst_id(Integer est_id) {
        this.est_id = est_id;
    }

    /**
     * @return the est_nome
     */
    public String getEst_nome() {
        return est_nome;
    }

    /**
     * @param est_nome the est_nome to set
     */
    public void setEst_nome(String est_nome) {
        this.est_nome = est_nome;
    }

    /**
     * @return the est_sigla
     */
    public String getEst_sigla() {
        return est_sigla;
    }

    /**
     * @param est_sigla the est_sigla to set
     */
    public void setEst_sigla(String est_sigla) {
        this.est_sigla = est_sigla;
    }

    /**
     * @return the idEstado
     */
    public HtmlInputText getIdEstado() {
        return idEstado;
    }

    /**
     * @param idEstado the idEstado to set
     */
    public void setIdEstado(HtmlInputText idEstado) {
        this.idEstado = idEstado;
    }

    /**
     * @return the nomeEstado
     */
    public HtmlInputText getNomeEstado() {
        return nomeEstado;
    }

    /**
     * @param nomeEstado the nomeEstado to set
     */
    public void setNomeEstado(HtmlInputText nomeEstado) {
        this.nomeEstado = nomeEstado;
    }

    /**
     * @return the siglaEstado
     */
    public HtmlInputText getSiglaEstado() {
        return siglaEstado;
    }

    /**
     * @param siglaEstado the siglaEstado to set
     */
    public void setSiglaEstado(HtmlInputText siglaEstado) {
        this.siglaEstado = siglaEstado;
    }

    /**
     * @return the idEstadoOculto
     */
    public HtmlInputHidden getIdEstadoOculto() {
        return idEstadoOculto;
    }

    /**
     * @param idEstadoOculto the idEstadoOculto to set
     */
    public void setIdEstadoOculto(HtmlInputHidden idEstadoOculto) {
        this.idEstadoOculto = idEstadoOculto;
    }

  
}

8 Respostas

K

Jovem,
Pelo o que entendi você não quer mais navegar para a pagina de sucesso.xhtml ou erro.xhtml quer permanecer na mesma pagina, é só colocar o retorno do metodo gravar como void. Este comportamento ocorre porque está sendo utilizado a navegação do faces neste metodo que redireciona para a pagina de acordo com o retorno do metodo.

abs,

F

É isso mesmo, não quero navegar nas paginas de erro.xhtml e sucesso.xhtml, ja marquei os metodos como void, porém eu gostaria que fosse exibido na mesma pagina a uma mensagem de erro ou sucesso na gravaçao dos dados, e é exatamente isso q eu nao estou sabendo fazer…

J

Você pode usar o recurso do h:messages bem pratico de usar veja um exemplo neste link

http://www.javabeat.net/tips/52-display-error-messages-in-jsf-hmessages-.html

F

Era isso mesmo que eu estava precisando, e baseado na ideia que vc me passou consegui achar outro link que explica mais precisamente ainda, e esta funcionando perfeitamente com o ,

[url]http://www.guj.com.br/java/205187-retornar-mensagem-do-managedbean-para-pagina-jsf-resolvido[url]

porém agora surgiu um outro problema, eu estava precisando usar o do richfaces , pq na hora q ele salva o objeto no banco de dados, na parte de baixo da pagina existe uma lista que contem os objetos no banco, e eu gostaria q os objetos fossem atualizados na mesma hora, eu consegui fazer o objeto ser atualizado na hora com o ajax usando o porem a minha mensagem do que exibia erro ou sucesso, nao esta mais aparecendo, alguém sabe me dizer o pq?

GravaEstado.java

package br.salesianos.db;

import br.salesianos.lista.ListaEstado;
import br.salesianos.modelo.Estado;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.html.HtmlInputHidden;
import javax.faces.component.html.HtmlInputText;
import org.apache.commons.lang.WordUtils;
import org.hibernate.*;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

@ManagedBean
public class GravaEstado {

    private Integer est_id;    
    private String est_nom;
    private String est_nom_listar = "a";
    private String est_sigla;
    private HtmlInputText idEstado;
    private HtmlInputText nomeEstado;
    private HtmlInputText siglaEstado;
    private HtmlInputHidden idEstadoOculto;
    private Session sessao = CriadorDeSessaoNovo.getSession();
    private Transaction tx = sessao.beginTransaction();        

    public void limpar() {        
        getIdEstado().setValue("");
        getNomeEstado().setValue("");
        getSiglaEstado().setValue("");
        getIdEstadoOculto().setValue("");
    }

    public void gravar() {
        try {
            Estado obj_estado = new Estado();

            if (getEst_id() != 0) {
                //System.out.println("É sim2");
                obj_estado.setEst_id(getEst_id());
            }

            obj_estado.setEst_nom(WordUtils.capitalizeFully(getEst_nom()));
            obj_estado.setEst_sigla(getEst_sigla().toUpperCase());

            sessao.saveOrUpdate(obj_estado);

            tx.commit();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("FormEstado:gravar", new FacesMessage("Informações gravadas com sucesso!"));
            limpar();

        } catch (Exception erro) {

            System.out.println("Problema : " + erro);
            tx.rollback();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("FormEstado:gravar", new FacesMessage("Falha ao gravar informações!"));            
        }
    }

    public void excluir() {

        try {
            Estado obj_estado = new Estado();
            obj_estado.setEst_id(getEst_id());

            sessao.delete(obj_estado);

            tx.commit();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("FormEstado:excluir", new FacesMessage("Informações excluídas com sucesso!"));
            limpar();            

        } catch (Exception erro) {

            System.out.println("Problema : " + erro);
            tx.rollback();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("FormEstado:excluir", new FacesMessage("Falha ao excluir informações!!"));            
        }
    }

    /**
     * @return the est_id
     */
    public Integer getEst_id() {
        return est_id;
    }

    /**
     * @param est_id the est_id to set
     */
    public void setEst_id(Integer est_id) {
        this.est_id = est_id;
    }

    /**
     * @return the est_nom
     */
    public String getEst_nom() {
        return est_nom;
    }

    /**
     * @param est_nom the est_nom to set
     */
    public void setEst_nom(String est_nom) {
        this.est_nom = est_nom;
    }

    /**
     * @return the est_sigla
     */
    public String getEst_sigla() {
        return est_sigla;
    }

    /**
     * @param est_sigla the est_sigla to set
     */
    public void setEst_sigla(String est_sigla) {
        this.est_sigla = est_sigla;
    }

    /**
     * @return the idEstado
     */
    public HtmlInputText getIdEstado() {
        return idEstado;
    }

    /**
     * @param idEstado the idEstado to set
     */
    public void setIdEstado(HtmlInputText idEstado) {
        this.idEstado = idEstado;
    }

    /**
     * @return the nomeEstado
     */
    public HtmlInputText getNomeEstado() {
        return nomeEstado;
    }

    /**
     * @param nomeEstado the nomeEstado to set
     */
    public void setNomeEstado(HtmlInputText nomeEstado) {
        this.nomeEstado = nomeEstado;
    }

    /**
     * @return the siglaEstado
     */
    public HtmlInputText getSiglaEstado() {
        return siglaEstado;
    }

    /**
     * @param siglaEstado the siglaEstado to set
     */
    public void setSiglaEstado(HtmlInputText siglaEstado) {
        this.siglaEstado = siglaEstado;
    }

    /**
     * @return the idEstadoOculto
     */
    public HtmlInputHidden getIdEstadoOculto() {
        return idEstadoOculto;
    }

    /**
     * @param idEstadoOculto the idEstadoOculto to set
     */
    public void setIdEstadoOculto(HtmlInputHidden idEstadoOculto) {
        this.idEstadoOculto = idEstadoOculto;
    }

 

    /**
     * @return the est_nom_listar
     */
    public String getEst_nom_listar() {
        return est_nom_listar;
    }

    /**
     * @param est_nom_listar the est_nom_listar to set
     */
    public void setEst_nom_listar(String est_nom_listar) {
        this.est_nom_listar = est_nom_listar;
    }

  
}
ListaEstado.java
package br.salesianos.lista;

import br.salesianos.db.*;
import br.salesianos.modelo.Estado;
import java.util.List;
import javax.faces.bean.ManagedBean;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

@ManagedBean
public class ListaEstado {

    private String est_nom = "";
    private List suaLista;


    public ListaEstado() {
        filtrar();
    }

    public void filtrar() {         
         Session sessao = CriadorDeSessaoNovo.getSession();
         //Query listagem_query = sessao.createQuery("from Estado where est_nom like '%"+getEst_nom()+"%' order by est_nom");
         Criteria listagem_query = sessao.createCriteria(Estado.class);
         listagem_query.addOrder(Order.asc("est_nom"));
         listagem_query.add(Restrictions.like("est_nom","%"+getEst_nom()+"%").ignoreCase());
         setSuaLista(listagem_query.list());
         sessao.close();
    }

    /**
     * @return the est_nom
     */
    public String getEst_nom() {
        return est_nom;
    }

    /**
     * @param est_nom the est_nom to set
     */
    public void setEst_nom(String est_nom) {
        this.est_nom = est_nom;
    }

    /**
     * @return the suaLista
     */
    public List getSuaLista() {
        return suaLista;
    }

    /**
     * @param suaLista the suaLista to set
     */
    public void setSuaLista(List suaLista) {
        this.suaLista = suaLista;
    }

    

}

cadastro_estado.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"      
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:head><title>Curriculo Salesiano</title>
        <link rel="stylesheet" type="text/css" href="css/principal.css" />
        <script type="text/javascript" src="js/jquery-1.5.2.min.js"/>
        <script type="text/javascript" src="js/corTabela.js"/>
        <script language="JavaScript">
        function function1(elem) {
                var c = elem.innerHTML;		
                var d = elem.childNodes[0].innerHTML;
                var e = elem.childNodes[1].innerHTML;
                var f = elem.childNodes[2].innerHTML;
                //alert(c+"-"+d+"-"+e+"-"+f)
                document.getElementById("FormEstado:idEstado").value=d;
                document.getElementById("FormEstado:idEstadoOculto").value=d;
                document.getElementById("FormEstado:siglaEstado").value=e;
                document.getElementById("FormEstado:nomeEstado").value=f;
        }
        </script>       
    </h:head>
    <h:body>
        <div align="center">
            <h1>Estados</h1>

            <rich:panel header="Cadastro" >

                <h:form id="FormEstado">                  

                    <table id="cadastro">
                        <tr>
                            <td align="right">ID Estado:</td>
                            <td><h:inputText id="idEstado"  readonly="true" value="#{gravaEstado.est_id}" binding="#{gravaEstado.idEstado}" /></td>
                        </tr>
                        <tr>
                            <td align="right">Sigla Estado:</td>
                            <td><h:inputText id="siglaEstado" maxlength="2" value="#{gravaEstado.est_sigla}" binding="#{gravaEstado.siglaEstado}" required="true" requiredMessage="O campo SiglaEstado deve ser preenchido" />
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2"><h:message  styleClass="mensagemErro" for="siglaEstado" /></td>
                        </tr>
                        <tr>
                            <td align="right">Nome do estado:</td>
                            <td><h:inputText id="nomeEstado" value="#{gravaEstado.est_nom}" binding="#{gravaEstado.nomeEstado}" required="true" requiredMessage="O campo NomeEstado deve ser preenchido"/></td>
                        </tr>
                        <tr>
                            <td colspan="2"><h:message styleClass="mensagemErro" for="nomeEstado" /></td>
                        </tr>
                    </table>

                    <h:inputHidden id="idEstadoOculto" value="#{gravaEstado.est_id}" binding="#{gravaEstado.idEstadoOculto}" />


                    <h:commandButton action="#{gravaEstado.limpar}" value="Limpar"/>
                    &nbsp;&nbsp;
                    <a4j:commandButton id="gravar" render="out" value="Gravar" action="#{gravaEstado.gravar}" />
                    &nbsp;&nbsp;                    
                    <h:commandButton id="excluir" value="Excluir" action="#{gravaEstado.excluir}" />

                    <br/><br/>
                </h:form>
            </rich:panel>
            <br/>
            <h:message for="gravar" />&nbsp;
            <h:message for="excluir" />
            <br/><br/>
            <rich:panel header="Pesquisa" >
                <h:form>
                    <h:inputText value="#{listaEstado.est_nom}" />
                    <a4j:commandButton value="Pesquisar" render="out" action="#{listaEstado.filtrar}" />
                    <br/><br/>

                </h:form>
                <a4j:outputPanel id="out">
                    <table border="1">
                        <tr>
                            <td>ID</td>
                            <td>Sigla</td>
                            <td>Estado</td>
                        </tr>
                        <a4j:repeat value="#{listaEstado.suaLista}" var="x">
                            <tr onclick="function1(this)"><td>#{x.est_id}</td><td>#{x.est_sigla}</td><td>#{x.est_nom}</td></tr>
                        </a4j:repeat>
                    </table>

                </a4j:outputPanel>
            </rich:panel>
            <h2><a href="inicio.jsf">Retornar a pagina Principal</a></h2>
            <br/>


        </div></h:body></html>
J

Eu não consegui identificar qual quadro ou mensagem vc quer atualizar depois de acionar o commandButton ajax, mas
basicamente vc precisa preencher o atributo reRender com os "componente que deseja que seja atualizado (“re-renderizado”).

± assim (nao compilei)

<h:form id="frmCadastro">

 <a4j:commandButton id="gravar" render="out"  value="Gravar" action="#{gravaEstado.gravar}" rerender="frmCadastro:msgGravar" />  
  <h:message for="gravar" id="msgGravar"/>   
</h:form>
F

O que eu queria atualizar era essa parte

<h:message for="gravar" />

Mas eu simplesmente troquei pelo message do rich e funcionou

<rich:message for="gravar" />

Resolvi um e mais outro problema apareceu, agora o função "limpar" q eu possuia, nao esta mais limpando os campos, e antes com o ele limpava

@ManagedBean
public class GravaEstado {

    private Integer est_id;    
    private String est_nom;    
    private String est_sigla;
    private HtmlInputText idEstado;
    private HtmlInputText nomeEstado;
    private HtmlInputText siglaEstado;
    private HtmlInputHidden idEstadoOculto;
    private Session sessao = CriadorDeSessaoNovo.getSession();
    private Transaction tx = sessao.beginTransaction();        

    public void limpar() {        
        getIdEstado().setValue("");
        getNomeEstado().setValue("");
        getSiglaEstado().setValue("");
        getIdEstadoOculto().setValue("");
    }

Aki, outra coisa, pra q serve o componente rerender?

rerender="frmCadastro:msgGravar"
J

o reRender é usado em tags a4j que é acionado via ajax, e através dele que vc menciona qual ou quais componentes da sua pagina quer que seja atualizado;

± assim
Imagine uma tela de pedido e no rodapé da pagina vc tem um panelgrid que mostra o total do pedido, a medida
que vc vai inserindo itens no pedido (via alguma tag a4j) vc indicaria para reRender o id do panelgrid para que
seja re-renderizado e consequentemente mostrando o valor total atualizado.

é isso.

Segue o link da documentação de repente pode te ajudar

http://docs.jboss.org/richfaces/latest_3_3_X/en/tlddoc/

F

Eu uso Richfaces 4 e agora q eu estava analisando melhor, vi q nao tem o rerender nele, mas mesmo assim graças a dica q vc me deu de usar o render em outras parte, consegui usar a funcao limpar atraves do render do a4j(não sabia, mas é possivel adicionar mais de uma id no render separado por virgulas) para limpar os campos do formulario depois que eu gravo ou excluo os dados do meu formulario

So q porém não consegui usar a funçar limpar diretamente no botao a4j por causa da validação(ele limpa, mas da erro de validação justamente pq o campo ta limpo) e nem adianta usar o immediate=true pq ele nao aceita, ai eu simplesmente criei uma função javascript pra limpar os campos e funcionou.

Muito obrigado pela ajuda, t+

Ta ai minha pagina xhtml final

cadastro_estado.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"      
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:head><title>Curriculo Salesiano</title>
        <link rel="stylesheet" type="text/css" href="css/principal.css" />
        <script type="text/javascript" src="js/jquery-1.5.2.min.js"/>
        <script type="text/javascript" src="js/corTabela.js"/>
        <script language="JavaScript">
        function function1(elem) {
                var c = elem.innerHTML;		
                var d = elem.childNodes[0].innerHTML;
                var e = elem.childNodes[1].innerHTML;
                var f = elem.childNodes[2].innerHTML;
                //alert(c+"-"+d+"-"+e+"-"+f)
                document.getElementById("FormEstado:idEstado").value=d;
                document.getElementById("FormEstado:idEstadoOculto").value=d;
                document.getElementById("FormEstado:siglaEstado").value=e;
                document.getElementById("FormEstado:nomeEstado").value=f;
        }
        </script>
        <script language="JavaScript">
        function limpador() {
                document.getElementById("FormEstado:idEstado").value="";
                document.getElementById("FormEstado:idEstadoOculto").value="";
                document.getElementById("FormEstado:siglaEstado").value="";
                document.getElementById("FormEstado:nomeEstado").value="";
        }
        </script>
    </h:head>
    <h:body>
        <div align="center">
            <h1>Estados</h1>

            <rich:panel header="Cadastro" >

                <h:form id="FormEstado">                  

                    <table id="cadastro">
                        <tr>
                            <td align="right">ID Estado:</td>
                            <td><h:inputText id="idEstado"  readonly="true" value="#{gravaEstado.est_id}" binding="#{gravaEstado.idEstado}" /></td>
                        </tr>
                        <tr>
                            <td align="right">Sigla Estado:</td>
                            <td><h:inputText id="siglaEstado" maxlength="2" value="#{gravaEstado.est_sigla}" binding="#{gravaEstado.siglaEstado}" required="true" requiredMessage="O campo SiglaEstado deve ser preenchido" />
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2"><h:message  styleClass="mensagemErro" for="siglaEstado" /></td>
                        </tr>
                        <tr>
                            <td align="right">Nome do estado:</td>
                            <td><h:inputText id="nomeEstado" value="#{gravaEstado.est_nom}" binding="#{gravaEstado.nomeEstado}" required="true" requiredMessage="O campo NomeEstado deve ser preenchido"/></td>
                        </tr>
                        <tr>
                            <td colspan="2"><h:message styleClass="mensagemErro" for="nomeEstado" /></td>
                        </tr>
                    </table>

                    <h:inputHidden id="idEstadoOculto" value="#{gravaEstado.est_id}" binding="#{gravaEstado.idEstadoOculto}" />


                    <a4j:commandButton immediate="true" onclick="limpador()"  value="Limpar"/>
                    &nbsp;&nbsp;
                    <a4j:commandButton id="gravar"  render="FormEstado,out" value="Gravar" action="#{gravaEstado.gravar}" />
                    &nbsp;&nbsp;                    
                    <a4j:commandButton id="excluir" render="FormEstado,out" value="Excluir" action="#{gravaEstado.excluir}" />

                    <br/><br/>
                </h:form>
            </rich:panel>
            <br/>
            <rich:message for="gravar" />&nbsp;<rich:message for="excluir" />

            <br/><br/>
            
            <rich:panel header="Pesquisa" >
                <h:form>
                    <h:inputText value="#{listaEstado.est_nom}" />
                    <a4j:commandButton value="Pesquisar" render="out" action="#{listaEstado.filtrar}" />
                    <br/><br/>

                </h:form>
                <a4j:outputPanel id="out">
                    <table border="1">
                        <tr>
                            <td>ID</td>
                            <td>Sigla</td>
                            <td>Estado</td>
                        </tr>
                        <a4j:repeat value="#{listaEstado.suaLista}" var="x">
                            <tr onclick="function1(this)"><td>#{x.est_id}</td><td>#{x.est_sigla}</td><td>#{x.est_nom}</td></tr>
                        </a4j:repeat>
                    </table>

                </a4j:outputPanel>
            </rich:panel>
            <h2><a href="inicio.jsf">Retornar a pagina Principal</a></h2>
            <br/>


        </div></h:body></html>
Criado 28 de abril de 2011
Ultima resposta 29 de abr. de 2011
Respostas 8
Participantes 3