Problemas em carregar selectOneMenu

6 respostas
cs.santos0

iai pessual,

to começando a usar JSF agora e to com problemas para carregar um combo.....vcs poderiam me ajudar?

segue meu MBean:

package br.com.cienci.nfe.mbean;

import br.com.cienci.nfe.dao.DaoFactory;
import br.com.cienci.nfe.modelo.Role;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

/**
 *
 * @author Ciro S. Santos
 */
public class UsuarioBean {

    private DaoFactory daoFactory; 
    private List<SelectItem> listMenuPerson = new ArrayList<SelectItem>();  
    
    public UsuarioBean(){
        this.daoFactory = new DaoFactory(); 
    }

    public List<SelectItem> getRoles(){       
        List<Role> itens = this.daoFactory.getRoleDao().listaTudo();        
        for(Role r: itens){
            listMenuPerson.add(new SelectItem(String.valueOf(r.getId()), r.getDescricao()));
        }
        return listMenuPerson;
    }
}

e no jsp:

<h:selectOneMenu value="" id="role_login"  
                                         requiredMessage="Campo Permissão é obrigatório."  
                                         required="true">  
                            <f:selectItem itemValue="" itemLabel="-- Selecione --" />  
                            <f:selectItems  value="#{usuarioBean.roles}"/>
                        </h:selectOneMenu>  
                        <h:message for="role_login" errorStyle="color: darkred;"/>

ai quando executo a pagina a primeira vez, ele traz os registros duplicados do banco, e toda vez q eu abro a pagina é duplicado mais uma vez, ou seja, se eu abrir 10 vezes a pagina ele carrega 10 vezes cada informação do bd....

alguem ai pode me dar uma força?
vlw

6 Respostas

cs.santos0

bom, fiz o seguinte:

public List<SelectItem> getRoles(){ listMenuRoles.clear(); List<Role> itens = this.daoFactory.getRoleDao().listaTudo(); for(Role r: itens){ listMenuRoles.add(new SelectItem(String.valueOf(r.getId()), r.getDescricao())); } return listMenuRoles; }

adicionei o clear()…e aparentemente funcionou…mas alguem sabe me dizer pq ele fica duplicando sempre?..e como resolver sem o clear?

outra coisa…como eu faço para pegar o id nesse combo ai e mostrar a descrição?
flw

abelgomes

seu codigo ta certinho…mas tova vez que carrega a pagina ele da um geRoles(); ou seja ele preenche a lista denovo e denovo e denovo, qauntas vezes for chamado o getRoles(), mas agora que vc deu o clear…ta tudo ok…outr saida seria tirar esse codigo de dentro do getRoles() e colocar em outro lugar, e deixa o getRole() somente para retorna a Lista :wink:
espero ter ajudado…

cs.santos0

vlw a ajuda ai…

é verdade, como ele ta sendo chamado toda hora, ele ta recarregando…vlw

agora, com relação a pegar o id do q eu selecionar e mostrar a descrição no value…alguem manja como posso fazer?

<select id="idUnidade" name="produto.unMedida"> <option value="0">-- Selecione --</option> <c:forEach items="${factory.unMedidas}" var="unMedida"> <option value="${unMedida}" <c:if test="${produto.unMedida == unMedida}"> selected="true" </c:if> >${unMedida}</option> </c:forEach> </select>

ou seja, colcoar um valor no value e outro para exibir…

vlw

abelgomes

não entendi, achoq ue vc eja esta fazendo isso aqui:

for(Role r: itens){

listMenuRoles.add(new SelectItem(String.valueOf(r.getId()), r.getDescricao()));

}

mostra a descricao, mas seleciona o ID…

ou eu entendi errado?

cs.santos0

aaaaaaaaaaah ta…isso msm, entendi…

era isso msm, problema resolvido com combo…

vlw cara…

cs.santos0

aproveitando o tópico…estou com uma outra duvida…creio q seja uma pergunta boba…mas ai vai…

como faço para pegar o valor de um <h:inputHidden> em uma função javascript e mostrar em um alert…não consegui fazer isso…tentei fazer o seguinte:

<h:inputHidden id="idResultado" value="#{usuarioBean.resultado}"/>

<script language="javascript"> function showRes(){ alert(document.getElementsByName("idResultado").value); } </script>

<a4j:commandButton action="#{usuarioBean.adicionarUsuario}" onclick="showRes();" value="Cadastrar" />

mas isso ai num resolveu…alguem ai podia me dar uma força?
vlw

Criado 22 de setembro de 2008
Ultima resposta 23 de set. de 2008
Respostas 6
Participantes 2