Rich:comboBox - tem bug mesmo?

Caros amigos de fórum…
conto com sua sabedoria novamente para tomar uma decisao em relação ao meu projeto.

Estou utilizando o rich:combobox em um projeto jsf que estou desenvolvendo. Conforme já vi o depoimento de outros camaradados do forum o maldito componente nao mostra o label de cada item da combo, e sim o que deveria ser o seu valor oculto. Pelo menos quando utilizando com f:selectItems e preenchido com uma coleção de objetos SelectItem. :evil:

Fiz muitas gambiarras lamentáveis para contornar esse problema. Mas usar o rich:combo, que é bonitinho, está me dando muito trabalho.Portanto, pergunto: isso é realmente um bug do componente?estou utilizando errado?

Vi uma outra forma de se usar o componente (ainda nao testei, mas o farei com urgencia) que é preencher uma collection da classe x e jogar no suggestionValues do componente, depois sobrescrever os métodos equals e toString …alguem já usou dessa forma?

Sinceramente, se nao resolver essa joça vou arrancar esse componente do projeto.

Muito obrigado a todos novamente!!!

Cara bug nao eh, pq ja usei ele, entao provavelmente vc ta fazendo errado, agora pra ter certeza, era bom postar como tu fez ne. Abraçs

é,mal nao faz :D…não tô com o fonte a mão mas o cenário é o seguinte

esse é o cara que que eu quero listar na combo


public class Entidade{
     
    private int id;
	
    private String descricao;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
}

o nosso amigao managerBean…


import javax.faces.model.SelectItem;

public class ManagerBean{
         
    private ArrayList<SelectItem> list;

    public void setList(ArrayList<SelectItem> list){
        this.list = list;
    }
    
    public ArrayList<SelectItem> getList getList(){
        return list;
    }
    
    public void consultaEntidades(){
         ArrayList<Entidade> x  = DAO.consultaEntidades();
         
         list = new ArrayList<SelectItem>();
         
         for (Iterator<Entidade> i = x.iterator(); i.haxNext();){
    		
            Entidade = i.next();
            
            //no construtor do SelectItem passo o id como Value, e a descrição como Label
         	list.add(new SelectItem(i.getId(), i.getDescricao);
         	
         	/*tentei assim tambem
         	SelectItem s = new SelectItem();
         	s.setValue(i.getId());
         	s.setLabel(i.getDescricao());
         	list.add(s);
         	*/
                  
         }
    }
         
}

e na página .jsp…


...

	<rich:comboBox defaultLabel="Selecione...">
		<f:selectItems value="#{managerBean.list}" />					
	</rich:comboBox>

...

foi assim que eu fiz…difere em algo de voce?

muito obrigado!!!

kra, estou com o mesmo problema que vc, quero gerar um combobox, porem a unica diferenca é que ele tem que ser auto completado ( ex: http://jsfunit.demo.jboss.com/jboss-jsfunit-examples-richfaces/richfaces/suggestionBox.jsf;jsessionid=0DA931BD7BCDA48FACCF80068FE5A762 ).

Eu já fiz funcionar sem o suggestionBox, segue o exemplo abaixo e vê se é o que vc quer:

<rich:tabPanel> <rich:tab label="Selecione o Tipo"> <h:selectOneMenu> <s:selectItems value="#{tipoList.resultList}" var="tipo" label="#{tipo.nome}" noSelectionLabel="Lista de Tipos" /> </h:selectOneMenu> <div class="actionButtons"><s:button value=" Selecionar " view="/TipoList.xhtml"> <f:param name="from" value="ProdutoEdit" /> </s:button></div> </rich:tab> </rich:tabPanel>

Espero ter ajudado e aguardo um help tb.

velho,valeu pela força,mas acho que o seu código nao me serve, porque voce está usando o h:selectOneMenu. Se bem que se o rich:combo nao rolar, vou de h:selectOneMenu mesmo,hehehe…mas ele funciona de boa mesmo

com relação ao autocomplete, esse componente infernal que eu estou questionando, o rich:combobox, já tem o autocomplete por default

Intao, por isto que eu falei que estou no mesmo barco que vc.
Porem não posso usar o selectOneMenu…

TEM Q SER algum com autoComplete… hehehehe

pois é…tamos no mesmo barco furado,rsrsrs

o jeito é rezar pra alguem já ter feito isso funcionar,e que o mesmo veja esse topico!!!rsrs

além da que mostrei no código,vi uma segunda forma de usar o componente,usando suggestionValues…ainda nao testei, mas quem sabe hoje vai!!!

O com sugestion Values eu fiz funcionar, porém ele é estático, e preciso de pegar os valores do banco mesmo…

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich">
      
      <rich:comboBox defaultLabel="Enter some value">
            <f:selectItem itemValue="suggestion 1"/>
            <f:selectItem itemValue="suggestion 2"/>
            <f:selectItem itemValue="suggestion 3"/>
            <f:selectItem itemValue="suggestion 4"/>
            <f:selectItem itemValue="suggestion 5"/>
      </rich:comboBox>
      
            
</ui:composition>

eu digo usar assim:

...
<rich:combobox defaultLabel="Selecione..." suggestionValues="#{managerBean.list}">
</rich:combobox>
...

no seu managerBean voce consulta o banco, carrega uma collection e joga nessa propriedade.
vi um exemplo desse jeito no proprio src do RichFaces. No exemplo, tambem foram sobrepostos os métodos equals e toString da classe que irá compor a collection. O toString, imagino que seja para definir qual será o texto exibido na combo.
Como disse ainda nao testei esse cara. Mas pretendo faze-lo logo!

Testae, pq tenho que fazer o mais rapido possivel…

vlw!!!

o meu tambem é pra ontem…vou testar hoje a noite e dou um feedback aqui no topico

a nao ser que alguem apareça primeiro com a solução :slight_smile:

valeu,caras

alias, eu nao tenho certeza, mais em vez de usar um ArrayList tipado, use um array de SelectItem[], eu se nao me engano usava assim. Outra coisa, verifica se o objeto que ta vindo da dao, ta vindo com os valores setados certinhos, descricao e id. Tenta-ae e da um feedback. Vlw

Usando um array de SelectItem[]?vixi…rs.valeu pela dica,vou testar sim…brigadao!Mas onde coloco esse array, jogo ele em qual propriedade do componente?

testei tambem usando o suggestionvalues do componente, passando um ArrayList tipado…nao resolveu!rsrsrs

de qualquer forma, se alguem quiser usar assim ao inves de usar o f:selectitems, é realmente necessário sobrescrever o método toString da classe que vai ser exibida no combo.

com o rich combobox, parece que tem que fazer um converter, confere?

cara, tambem tava pensando nisso, em criar um convert para tratar o objeto…

vou fazer e testar…vou dar a ultima chance pra essa joça funcionar! :smiley:

blza… pq ele tah retornando:

[br.com.empresa.projeto.entity.Item@7beda, br.com.empresa.projeto.entity.Item@1d5aac]

e voce está usando o Converter?

intao, estou pesquisando sobre isto…

:slight_smile:

[quote=alias]Usando um array de SelectItem[]?vixi…rs.valeu pela dica,vou testar sim…brigadao!Mas onde coloco esse array, jogo ele em qual propriedade do componente?
[/quote]

Na mesma propriedade que vc coloca o ArrayList, eu lembro que muitas vezes eu nao conseguia usar o ArrayList, entao sempre optei pelo array primitivo do proprio componente, entao tenta-e.

Kra, deu certo!!! Daki a poko posto o codigo!!!