Erro p:selectOneMenu objeto denominado grupos nao encontrado[Resolvido]

10 respostas
b10machado

Pessoal to tentando fazer pela 1 vez esse “spinner” de selecao de grupo porem sem sucesso se alguem puder me ajudar. obrigado

<center>
               <h:outputText value="Grupos: " />  
                <p:selectOneMenu value="#{grupoBean.listGrupos}"  effect="fade" converter="grupos" >  
                           <f:selectItem itemLabel="Selecione um grupo" itemValue="" />  
                                 <f:selectItems value="#{grupoBean.listGrupos}" var="grupos" itemLabel="#{grupos.nomeGrupo}" 
                                               itemValue="#{grupos}"/>  />  
                 </p:selectOneMenu>
 </center>

10 Respostas

G

Esse grupos é um enum ?
Coloca o código do seu converter

b10machado

entao cara na verdade eu pensei q so era necessario fazer um list… e jogar no componente

agora q eu vi que tem q fazer uma classe pára esse converter!!

G

Se você não tem o converter que está declarando e se o valor do seu select for um Objeto criado por você ou um Enum tu vai precisar de num Converter.
Se for String ou Integer não é preciso.

b10machado

so que nao entendi mto bem :s;

minha lista no componente vai ser de String ==> nome_grupo

public List<Grupos> getListGrupos() {
        if(listGrupos == null){
            GrupoPG grupos= new GrupoPG();
            UsuarioDaoPG user = new UsuarioDaoPG();
            UserBean bean = new UserBean();
            ///email = bean.getEmail();
            //email = "[email removido]";
            //idUsuario = user.retornaIdUsuario(email);
             idUsuario = 1;

            listGrupos = grupos.pesquisar(idUsuario);

        }
        return listGrupos;
    }

pra que precisa desse converter!!

b10machado

funcionou, mais poderia me explicar qdo há a necessidade desse converte!!

G

Você esta passando um List de objetos do tipo Grupo
então você precisa ter um converter para este objeto do tipo Grupo.
Abaixo segue um converter que utilizo, mas estou utilizando Spring para obter
o objeto Area do banco de dados pelo seu id, mas veja mais ou menos como faço e crie o seu converter.

@Autowired
    private IAreaService areaService;

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        Area area;
        if (StringUtils.isEmpty(value)) {
            area = null;
        } else {
            area = areaService.findById(new Integer(value));
        }
        return area;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if (value == null || value.equals("")) {  
            return "";  
        } else {  
            return String.valueOf(((Area) value).getId());  
        }  
    }

Sua classe do converter vai ter que implementar a classe Converter do JSF.

javax.faces.convert.Converter

[]'s

G

Se resolvou altera o titulo do topico para resolvido.

[]'s

b10machado

ultima pergunta por exemplo, qdo o cara selecionar um item da lista qro fazer um update no banco, onde eu chamaria esse metodo nele??

G

Utilizando seu código acima, adicione a linha 4.
Ao alterar o valor do seu select ele vai chamar o seu método que foi passado no seu listener.

<p:selectOneMenu value="#{grupoBean.listGrupos}"  effect="fade" converter="grupos" >
    <f:selectItem itemLabel="Selecione um grupo" itemValue="" />    
    <f:selectItems value="#{grupoBean.listGrupos}" var="grupos" itemLabel="#{grupos.nomeGrupo}"   itemValue="#{grupos}"/> 
    <p:ajax event="change" listener="#{seuManagedBean.seuMetodo}" update="update....."/>
</p:selectOneMenu>

[]'s

b10machado

cara nao deu certo isso do ajax nao chega a entrar no metodo, alguma dica?

Criado 11 de outubro de 2012
Ultima resposta 21 de out. de 2012
Respostas 10
Participantes 2