o colSelecItemAlunosSelecionados eu fiz um List
o colSelectItemAlunos é um List
o problema é que eu selecionando um combo eu quero monstrar na direita os valores ja atribuido, só que quando eu jogo os valores na lista de string ele da erro,
tentei de vez um list de String, passa um lista do objeto que eu manipulo também deu errado.
Alguns dias atrás o leonardobrancalhao mandou uma mensagem privada para mim perguntando sobre esse componente.
Vou postar a resposta que enviei para ele, veja se te ajuda.
<h:form><h:commandLinkvalue="Submit"action="#{testeMB.submit}"/><rich:pickListvalue="#{testeMB.selectedItems}"><!-- Aqui você pode adicionar a sua lista de selectItem --><f:selectItemitemLabel="Option 1"itemValue="1"/><!-- no item value, eu recomendo colocar o ID da tabela que você vai utilizar --><f:selectItemitemLabel="Option 2"itemValue="2"/><f:selectItemitemLabel="Option 3"itemValue="3"/><f:selectItemitemLabel="Option 4"itemValue="4"/><f:selectItemitemLabel="Option 5"itemValue="5"/></rich:pickList></h:form>
ManagedBean:
importjavax.faces.bean.ManagedBean;importjavax.faces.bean.SessionScoped;@ManagedBean@SessionScopedpublicclassTesteMB{privateInteger[]selectedItems=newInteger[0];// O rich:pickList retonra para o MB um array de objetos dos valores selecionados. publicStringteste(){//Aqui você pode popular o atributo 'selectedItems' para a tela já carregar com itens selecionados return"teste";}publicStringsubmit(){for(Integerselect:selectedItems){System.out.println(select);//Aqui você recupera os ID´s dos itens selcionados. }return"teste";}publicInteger[]getSelectedItems(){returnselectedItems;}publicvoidsetSelectedItems(Integer[]selectedItems){this.selectedItems=selectedItems;}}
Se ainda tiver dúvidas, poste o código do seu MB.
[]'s
Daniel
tiago.vt
yorgan:
Opa,
Alguns dias atrás o leonardobrancalhao mandou uma mensagem privada para mim perguntando sobre esse componente.
Vou postar a resposta que enviei para ele, veja se te ajuda.
<h:form><h:commandLinkvalue="Submit"action="#{testeMB.submit}"/><rich:pickListvalue="#{testeMB.selectedItems}"><!-- Aqui você pode adicionar a sua lista de selectItem --><f:selectItemitemLabel="Option 1"itemValue="1"/><!-- no item value, eu recomendo colocar o ID da tabela que você vai utilizar --><f:selectItemitemLabel="Option 2"itemValue="2"/><f:selectItemitemLabel="Option 3"itemValue="3"/><f:selectItemitemLabel="Option 4"itemValue="4"/><f:selectItemitemLabel="Option 5"itemValue="5"/></rich:pickList></h:form>
ManagedBean:
importjavax.faces.bean.ManagedBean;importjavax.faces.bean.SessionScoped;@ManagedBean@SessionScopedpublicclassTesteMB{privateInteger[]selectedItems=newInteger[0];// O rich:pickList retonra para o MB um array de objetos dos valores selecionados. publicStringteste(){//Aqui você pode popular o atributo 'selectedItems' para a tela já carregar com itens selecionados return"teste";}publicStringsubmit(){for(Integerselect:selectedItems){System.out.println(select);//Aqui você recupera os ID´s dos itens selcionados. }return"teste";}publicInteger[]getSelectedItems(){returnselectedItems;}publicvoidsetSelectedItems(Integer[]selectedItems){this.selectedItems=selectedItems;}}
Se ainda tiver dúvidas, poste o código do seu MB.
[]'s
Daniel
Eu segui esse modelo tbm so q no lugar do array de Integer eu fiz de String, so que seu eu deixar alguma coisa ja add nesse array ele nao mostra nada, e c eu do um reRender nele, da erro.
que a tela é a seguinte,
eu tenho 1 combo de curso, qndo a pessoa seleciona o curso, ele carrega os alunos do curso e numa List de selectItem, dae eu tenho outra combo que é professor qndo eu seleciono essa compro eu queria mostra do lado direito os alunos que o professor ja possui, so q da erro qndo eu populo o objeto do lado direito
yorgan
Pode postar o seu MB?
tiago.vt
private List colSelecItemAlunosSelecionados;
private List colSelectItemAlunos;
c eu add alguma string na colSelecItemAlunosSelecionados ele da erro…na hora q o componente carrega, pq eu quero adiciona os alunos que o professor ja possui nessa colSelecItemAlunosSelecionados
yorgan
Mas a sua coleção de SelectItem é composta por ID(Integer) e Nome(String).
A lista de alunos selecionados deve ir buscas os dados através do ID, por isso você deve usar uma lista de Integer.
Além disso, você está usando List<>. Para os itens selecionados você deve usar um array.
Exemplo:
Lista de Alunos Disponíveis (colSelectItemAlunos):
1 - Aluno A
2 - Aluno B
3 - Aluno C
4 - Aluno D
5 - Aluno E
Fazendo assim, ele vai carregar a pickList com os alunos 2,4 e 5 selecionados.
[]'s
Daniel
tiago.vt
yorgan:
Mas a sua coleção de SelectItem é composta por ID(Integer) e Nome(String).
A lista de alunos selecionados deve ir buscas os dados através do ID, por isso você deve usar uma lista de Integer.
Além disso, você está usando List<>. Para os itens selecionados você deve usar um array.
Exemplo:
Lista de Alunos Disponíveis (colSelectItemAlunos):
1 - Aluno A
2 - Aluno B
3 - Aluno C
4 - Aluno D
5 - Aluno E
Fazendo assim, ele vai carregar a pickList com os alunos 2,4 e 5 selecionados.
[]'s
Daniel
so que usando o array eu não vo ter problema quando o tamanho dele, supondo que quando eu seleciono o combo ja exista 2 adicionados ele vai cria 1 array com espaço de 2 mais qndo o usuario for adiciona mais 1 naum vai da estouro no array?
yorgan
Não, o RichFaces trata isso.
E não que seja um problema ajudar, mas você poderia ter testado o código antes de postar essa dúvida né?
[]´s
Daniel
tiago.vt
yorgan:
Não, o RichFaces trata isso.
E não que seja um problema ajudar, mas você poderia ter testado o código antes de postar essa dúvida né?
[]´s
Daniel
É que na documentação do richfaces eu vi ele usando String, e dae pensei em usa o List, mais vou fazer do jeito que voce falo de noite, e posto o resultado, desde já te agradeço pela ajuda.
yorgan
O array tem que ser do mesmo tipo de objeto que você cria o SelectItem.
E no seu construtor você está usando inteiro, certo?
Ele trabalha da seguinte forma:
[list]Popula a lista com os objetos da coleção de SelecItem (que você montou com Value = ID e Label = NOME);[/list]
[list]Verifica se existem itens na lista de campos selecionados;[/list]
[list]Caso existam, percorre a lista de SelectItem para comparar o valor. Nessa hora ele vai comprar com o ID, então você precisa de uma lista de ID´s; [/list]
Basta ver no construtor do SelectItem
newSelectItem(Objectvalue,Stringlabel);//O label é o que ele mostra. Se não usar, ele usa o toString(). Já o Object é o que ele compara.