[color=blue]Gostaria da ajuda de vocês para encontrar uma saída, ou então não utilizar este componente.[/color]
Resumo:
Utilizando o componente, rich:comboBox, a lista apresenta os valores ao invés do label.
O pessoal no forum do jBoss [url]http://www.jboss.com/index.html?module=bb&op=viewtopic&t=133658[/url]
disse que este componente não tem esta funcionalidade, mas não acredito que o pessoal do Rich Faces iria cometer um erro tão grosseito destes, então acho que estou utilizando errado.
Para que serve este componente se não pode ser um select ?
Declaração do componente:
public List<SelectItem> getAreaList(){
List<AreaEntity> list = /*... recupera lista do banco*/;
List<SelectItem> comboList = new ArrayList<SelectItem>();
for(AreaEntity area : list)
comboList.add(new SelectItem(area.getId().toString(),area.getDescricao()));
return comboList;
}
Informações úteis:
Rich Faces versão 3.2.1-RC1 ( já testei nas anteriores )
JBoss 4.2.0
Firefox 2.0.0.14 / IE7 / Opera 9.26
pedro.neves, você conseguiu a solução para este problema??
Estou passando pela mesma situação e não consigo resolver!
Valeu!
Abraço.
mateusprado
tem um atributo chamado defaultLabel. será que ajuda?
lusilva1982
Não. O problema na verdade não é exibir um valor default e sim, carregar o valor para cada item do Combobox, ou seja, preencher o que seria no html puro o atributo value do Option, entendeu?
Ainda não consegui resolver usando rich:combobox, porém, funcionou com o h:selectOneMenu.
O managerbean resumido:
publicclassRegiaoControlimplementsSerializable{...privateArrayListdd_item_pais;// dropdown de países/* Getters / Setters */publicArrayListgetDd_item_pais(){// Prepara o ArrayList para trabalhar com o SelectItembuildDropDownPais();returndd_item_pais;}publicvoidsetDd_item_pais(ArrayListdd){this.dd_item_pais=dd;}/* Actions Begin */privatevoidbuildDropDownPais(){dd_item_pais=newArrayList();Iteratorit=rdao.getAllPais().listIterator();while(it.hasNext()){Paispais=(Pais)it.next();intid=pais.getId_pais();Stringnm=pais.getNome();dd_item_pais.add(newSelectItem(id,nm));}}/* Actions End */}
No value selectOneMenu eu coloquei o tipo e, no value do SelectItems coloquei o List, cujo cada indice corresponde a um SelectedItem();
Bean Java:
Trago a lista da base no formato List e converto para ArrayList de selectItem, passando primeiro o nome depois o id convertido em String, pois o segundo parâmetro aceita somente String:
Eu respondi essa questão, porém agora gerou um problema quanto ao itemSelecionado, pois ele será do tipo String, pelo fato de ter passado o nome como primeiro parâmetro na lista, e com isso não consigo recuperar o iD.
Se alguem tiver alguma solução…
Abraços
Att,
Lessandro
rollei
“Jboss”:
The component provides editable combobox element on the page.
Combo Box is a simplified select based version of Suggestion Box component, which uses
* client side suggestions
* declarative definition with f:selectItem(s) components
* a list of string objects
When using selectItem(s) for suggestion definition you should define only value of the selectItem. It is used both for displaying and storing.
Esse ‘combobox’ na verdade eh que deveria ser chamado de sugestion box, o que voce esta querendo pode ser feito usando o sugestion, soh que esse soh funciona para inputText … estranho nao? Lah no livedemo eles demonstram uma GAMBIARRA colocando uma imagem(que imita aquela imagem do combo) do lado do input para parecer que eh um combobox, com um metodo no onclick para mostrar a lista toda
Eu jah cheguei a ler alguma coisa sobre uma solucao para esse problema (nao lembro onde, nem como era) … porque era meio gambiarra tambem, para fazer esse combobox funcionar do jeito que deveria ser
The component provides editable combobox element on the page.
Combo Box is a simplified select based version of Suggestion Box component, which uses
* client side suggestions
* declarative definition with f:selectItem(s) components
* a list of string objects
When using selectItem(s) for suggestion definition you should define only value of the selectItem. It is used both for displaying and storing.
esse combo, funciona somente como lista de strings, e nada mais, n foi feito pra ser usado como vc esta tentando usar, tanto é q ele possui a funcionalidade de busca, onde vc digita e ele vai filtrando seus dados pra vc, como um suggestion box deveria ser …
rollei
Vou só dar um exemplo prático de um uso do rich:combobox
Digamos que você tem um formulário de cadastro com usuário e senha. Nesse formulário você pode ter também um pergunta secreta caso queira recuperar sua senha. Neste caso você poderia usar esse componente para dar uma gama de sugestôes ao usuário sem ter que forçá-lo a escolher uma opção de um select, já que o componente não amarra sua escolha às sugestões. Perceba que essas sugestões são apenas uma lista de string e o valor que vai ser salvo no banco é essa mesma string.
Você ate poderia usar o combobox para trazer objetos do banco, usando um conversor, mas esses valores exibidos no seu select devem ser únicos (de preferência a chave).
Eu gostaria de saber se alguem sabe de uma solução pronta para esse caso. Existe algum componente (icefaces, tomahawk, etc …) que implemente uma combo com uma busca pelo input do teclado? Isso é muito útil quando o combo tem muitos valores, o que acontece com muita frequência.
lessandronp
Entendi.
Vou dar uma olhada no input q vc mencionou.
No momento to usando o h:selectOneMenu comum, porém náo consigo adicionar no caso da alteração, como sendo mostrado como o primeiro item na lista, o valor gravado, ou seja, selecionado anteriormente que estána base.
Se eu adicionar um selectItem acontece o tipo de coisa: este valor passa a fazer parte da combo juntamente com os valores vindos da base, ou seja, acaba ficando 1 valor duplicado, o item selecionado + a lista da base que contem inclusive esse item selecionado.
Obrigado a vcs pela atenção, e assim que alguem tiver uma idéia, inclusive essa do inputText, pode postar ai que será de grande valor.
Abraços
Att
Lessandro
adrianosdebrito
Se você ver o código fonte gerado em html por esse rich:comboBox vai ver que no final ele não é um combo…
Eh um input acoplado com uma tabela que gera as sugestões de acordo com o que o usuário digitar…
Ah… e não posso discordar disso
Esse ‘combobox’ na verdade eh que deveria ser chamado de sugestion box, o que voce esta querendo pode ser feito usando o sugestion, soh que esse soh funciona para inputText … estranho nao? Lah no livedemo eles demonstram uma GAMBIARRA colocando uma imagem(que imita aquela imagem do combo) do lado do input para parecer que eh um combobox, com um metodo no onclick para mostrar a lista toda
Eu jah cheguei a ler alguma coisa sobre uma solucao para esse problema (nao lembro onde, nem como era) … porque era meio gambiarra tambem, para fazer esse combobox funcionar do jeito que deveria ser
lessandronp
eh verdade.
Eu tive resolvendo esse problema usando o h:selectOneMenu com o selectItems, onde tive q fazer a conversão dos items da base antes de jogar na lista que ia ser populada na combo.
Abraços,
Att,
Lessandro
K
kaioc89
Olá pessoal,
O que vcs querem fazer pode ser feito com suggestionBox.
Olhem este tópico que voces vao entender.