olá pessoal, seguinte estou desenvolvendo uma aplicação onde necessito criar um dataTable em que cada uma de suas linhas existe um SelectOneMenu. A dúvida é como recuperar os dados selecionados em todos os selectOneMenus no Managed Bean.
Uma idéia (e somente isto) seria manusear um Collection (List ou Set, talvez) no setter do bean (adicionar a collection ou alterar o valor).
Imagino isto partindo do pressuposto q vc não sabe quantos selects existirão.
Só uma idéia…
B
bsferreira
Sim todos terao valor sim, os mesmos são preenchidos através de um Enum.
Cheguei a pensar em algo como
...
List<NivelHabilidade> nivel = new ArrayList<NivelHabilidade>();
...
public void setNivel(NivelHabilidade nivel){
this.nivel.add(nivel);
}
Mas surgiu a dúvida de como recuperar estes valores novamente e preencher os selects com os valores armazenados no banco, quando esta tela for aberta novamente.
Z111
era exatamente o q eu havia imaginado…
mas como é o comportamento durante o submit?
É sequencial, ou seja, vai funcionar de forma ordenada (select1 é submetido e atribuido, depois select2 e assim por diante?).
Todos serão submetidos?
Não tenho como testar agora, soh a noite. Se vc testar, por favor poste o resultado…
B
bsferreira
Bom consegui fazer o que estava tentando, e a solucao é mais simples do que eu imaginava. Segue a solução caso alguem no futuro tenha a mesma dúvida.
O que fiz foi o seguinte, eu modifiquei o value do SelectOneMenu para o value do item que esta sendo iterado na tabela.
alterei a seguinte linha então
<h:selectOneMenu value="#{item.nivel}">
Quando o form é enviado os valores que estao no datatable são setados para os novos valores, ou seja a própria lista que preenche o datatable recebe os novos valores após a modificação.