Problema para editar Cidades usando JSF e Hibernate

2 respostas
F

Oi pessoal, tudo bem,

tenho um sistema que uso Hibernate e JSF 2, e tenho a seguinte tela

estou puxando o país de uma outra tabela(assim q a tela é carregada), e para pegar o estado, ao clicar no pais é ativado o valueOnChangeListener no selectOneMenu e assim ele consegue exibir o estado, o usúario seleciona o estado e digita o nome da cidade e manda gravar, até ai tudo bem.

Ao clicar em pesquisar, deve-se exibir todas as cidades cadastradas, com seus respectivos estado e países, porém ao se clicar em uma cidade deve-se carregar os dados para o formulario e permitir que o usuario altere esses dados, porem eu nao sei como posso enviar esses dados la pra cima.

Qualquer ajuda é bem vinda, obrigado pela atenção.

ps: o ID não é editavel pelo usúario

2 Respostas

R

O que vc precisa é simplesmente “repintar” o componente com o valor atribuido,no RichFaces isso seria feito com <a4j:support> e reRender.

F

Vc deve usar o Richfaces 3, pois no richfaces 4 não existe tal componente(), vc tem ideia de qual componente posso usar para fazer isso? outra coisa, o valueChangeListener do selectOneMenu é ativado pelo onChange, tem como chama-lo atraves do managedBean ou por alguma outra metodo do selectOneMenu que nao seja o onChange?

parte da pagina que possui a chamada ao selectOneMenu
<h:selectOneMenu immediate="true" valueChangeListener="#{gravaCidade.mudaListaEstado}" onchange="submit()" id="cidPais" value="#{gravaPais.pai_nom}">
         <f:selectItem itemLabel="" itemValue="" />
         <f:selectItems value="#{gravaPais.paises}" var="u" itemLabel="#{u.pai_nom}" itemValue="#{u.pai_nom}" />
</h:selectOneMenu>
parte do ManagedBean que trata isso
public void mudaListaEstado(ValueChangeEvent event) {

        Session sessao = CriadorDeSessaoNovo.getSession();

        String idString = event.getNewValue().toString();
        System.out.println("String: " + event.getNewValue().toString());

        Criteria listagem_query = sessao.createCriteria(Estado.class).
                createAlias("pais", "es").
                addOrder(Order.asc("es.pai_nom")).
                add(Restrictions.eq("es.pai_nom", idString).
                ignoreCase());
        setEstadosMany(listagem_query.list());        

        FacesContext.getCurrentInstance().renderResponse();
        
        sessao.close();
          
         
    }
Criado 14 de setembro de 2011
Ultima resposta 14 de set. de 2011
Respostas 2
Participantes 2