Consulta para gerar um h:selectOneMenu [RESOLVIDO]

4 respostas
G

Pessoal,

Tenho </rich:dataTable> e nele diversas linhas. Em cada linha dessa eu preciso de um selectOneMenu, mas, esse selectOneMenu deve ser montado de acordo com os dados existentes em sua linha, ou seja, preciso fazer uma consulta no banco antes da pagina ser renderizada para que eu possa mostrar as opções ao usuário. Cada linha dessa vai usar o mesmo método, mas, pode ter opções diferentes.

O que eu pensei: vou passar um parâmetro através dessa combo para que ele faça a consulta no banco e retorne para o usuário o que ele tem disponível para essa linha.

O problema é que não sei como fazer isso e nem mesmo se essa é a melhor forma de se fazer.

Será que tem alguém ai que já passou por um problema semelhante ao meu ou que possa me ajudar a solucionar esse problema?

Desde já agradeço a atenção de todos!

4 Respostas

fbl.lucas
Cara é só criar um método qualquer, List obterOpcoes(ObjetoLinha obj), que recebe como parametro o objeto que representa a linha atual faz a consulta ao banco e devolve a lista de opções para o h:selectOneMenu onde você chamaria a lista desta forma mais ou menos.
public List<Opcao> obterOpcoes(Objeto objeto){
     ...
}

<rich:dataTable value="#{bean.lista}" var="objeto"
...
<h:selectOneMenu value="#{bean.value}">
     <s:selectItems value="#{bean.obterOpcoes(objeto)}"/>
</h:selectOneMenu>
...
O básico é isso, agora se sua consulta retorna uma lista de entidades ou DTOs será necessário adicionar um converter. Caso seja uma lista de strings desta forma acima deve funcionar
luxu

pesquise sobre os componentes AJAX q te auxiliará…

G

Valeu fbl.lucas!

Eu até tinha pensado em algo do tipo, mas, não sabia se era a forma ideal de se fazer.

Muito obrigado!

fbl.lucas

gennf:
Valeu fbl.lucas!

Eu até tinha pensado em algo do tipo, mas, não sabia se era a forma ideal de se fazer.

Muito obrigado!


Se a dúvida tiver sido sanada, mude o titulo do post para “[Resolvido]”

Criado 22 de dezembro de 2011
Ultima resposta 22 de dez. de 2011
Respostas 4
Participantes 3