Problema SelectONeMenu não apresenta dados

4 respostas
redthi

<h:outputLabel value="UF:"/> <h:panelGroup> <h:selectOneMenu id="uf" value="#{clienteMB.uf}" > <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{clienteMB.listaUfs}" var="a" itemLabel="#{a.xUf}" itemValue="#{a.idUf}" /> <p:ajax update="municipio" event="change" listener="#{clienteMB.listaMunicipios}" /> </h:selectOneMenu> <h:outputLabel value="Município:" style="margin-left: 10px;"/> <h:selectOneMenu id="municipio" value="#{clienteMB.municipio}" > <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItems value="#{clienteMB.municipios}" var="b" itemLabel="#{b.xMun}" itemValue="#{b.idMunicipio}" /> </h:selectOneMenu> </h:panelGroup>

não tenho problema para inserir, nem listar, meu problema que quando esse select recebe os dados, pela 1 vez ele apresenta certo, se volta para minha lista e peço
para editar um outro os dados desse selectOneMenu não são atualizado, fica os dados do registro antigo, ao inves do atual.
alguem conhece alguma foram de resolver isso.

4 Respostas

surfzera

Como você está fazendo para popular seu selectoneMenu ? verifique se no seu metodo vc está criando uma lista de SelectedItems e retornando ela para a combo.

redthi
public List<SelectItem> getListaUfs() {
        mdao = new MunicipioDaoImpl();
        return mdao.consultaUf();
        List<SelectItem> objeto = new LinkedList<SelectItem>();
        for (Uf uf : mdao.consultaUf()) {
            objeto.add(new SelectItem(uf, uf.getxUf()));
        }
        return objeto;
    }




public void listaMunicipios(ValueChangeEvent event) {
        mdao = new MunicipioDaoImpl();
        return mdao.consultaUf();
        municipios = new LinkedList<SelectItem>();
        for (Municipio municipio : mdao.consulta(uf)) {
            municipios.add(new SelectItem(municipio, municipio.getxMun()));
        }
    }
ele popula certo, mas ele nao consegue pegar como um objeto!
surfzera

Exemplo ve se ajuda:

<h:selectOneMenu id="itens" value="#{ManterContrato.contrato.numero}">
     <f:selectItem itemLabel="-- Selecione um Contrato --" itemValue=""/>
     <f:selectItems value="#{ManterContrato.listarParaCombo}"/>
</h:selectOneMenu>


public List<SelectItem> getListarParaCombo() {
        abrirConexao();
        List lista = dao.listar(unidadeUsuario);
        fecharConexao();
        ArrayList<SelectItem> listaContrato = new ArrayList<SelectItem>();
        for (int i = 0; i < lista.size(); i++) {
            SelectItem contratoCombo = new SelectItem();
            Contrato e = (Contrato) lista.get(i);
            contratoCombo.setValue(e.getNumero());
            contratoCombo.setLabel(e.getNumero() + "-" + e.getNome_fabrica());
            listaContrato.add(contratoCombo);
        }
        return listaContrato;
    }
surfzera

Para pegar o valor selecionado você pode incluir o a4j:support

<h:selectOneMenu id="itens" value="#{ManterContrato.contrato.numero}">
      <f:selectItem itemLabel="-- Selecione um Contrato --" itemValue=""/>
      <f:selectItems value="#{ManterContrato.listarParaCombo}"/>
      <a4j:support event="onchange" action="#{ManterContrato.pegaContratoSelecionado}" ajaxSingle="true"/>
</h:selectOneMenu>
Criado 30 de novembro de 2010
Ultima resposta 30 de nov. de 2010
Respostas 4
Participantes 2