Pessoal possuo uma tabela com variáveis. Essas variáveis podem ser do tipo limite (ex.: Nr. de filhos 0…10) ou do tipo selecao (ex.: time de futebol : - Corinthians,Flamengo…)
Preciso criar uma página JSF que lê do banco todas as variáveis de perfil ( Nr. de filhos, time de futebol) … e gere um selectOneMenu, ou um inputext.
Até ai ja conseguir fazer.
O problema está em como atribuir esses valores caso o usuário altere e salvar no banco.
thiago, se vc já conseguiu ler os dados do banco e montar a lista, suponho que você tenha como identificar cada elemento da lista(‘idVariavel’ por exemplo). Sendo assim, quando o usuário selecionar um registro no Select, vc identifica qual elemento foi selecionado e depois executa um update no banco com os novos valores desse elemento.
T
thiagofmam
Eh, ja procurei alguns locais …
Criei um Map com o valor do id da variável, com o valor
ocorre tudo certo …
só falto entender como pegar esses valores ou como setar ele num expression
thiago, veja esse exemplo:
Na página jsp, tenho o seguinte código
<h:selectOneMenu value="#{cadastroCliente.idMunicipio}" id="nome" >
<c:selectItems value="#{cadastroCliente.listaMunicipios}"/>
</h:selectOneMenu>
No método getListaMunicipios do bean, criei uma coleção de <SelectItem> com o id e a descrição de cada elemento
public List<SelectItem> getListaMunicipios() {
List<SelectItem> municipios = new ArrayList<SelectItem>();
List<Municipio> listaMun = MunicipioDAO.getInstance().findAll();
municipios.add(new SelectItem(null, ""));
for (Municipio obj : listaMun) {
municipios.add(new SelectItem(obj.getId(), obj.toString()));
}
return municipios;
}
[]'s
T
thiagofmam
Boa tarde finotti,
Isso eu tó ligado, mas nesse caso o seu aí só existe um selectonemenu, no meu caso eu não sei se vai existir selectonemenu ou inputext. Eu tenho que ir do banco as variaveis, ver o tipo dela (Limite ou Selecao) e dessa variável pegar os possiveis valores/ou itens dessa variável.
No meu caso criei uma página que associo dinamicamente ao backingbean
Que monta certinho o grid (trazendo selectonemenu ou inputext a depender da variavel)
HtmlColumn coluna2 = new HtmlColumn();
if (perfil_atributosT.getTpperfilatributo() == 2) {/* Coluna do panelgrid lado direito - Combo */
HtmlSelectOneMenu combo = getCmbBoxPerfil(perfil_atributosT.getIdperfilatributo());
coluna2.getChildren().add(combo);
panelGridPerfil.getChildren().add(coluna2);
}else
if (perfil_atributosT.getTpperfilatributo() == 1) {/* Coluna do panelgrid lado direito - Input */
HtmlInputNumberSpinner input = getInputSpinner(perfil_atributosT);
coluna2.getChildren().add(input);
panelGridPerfil.getChildren().add(coluna2);
}
O problema que estou tendo é como saber quais os valores alterados, dos componentes etc… associar ele a um HashMap, etc e depois pode salvar.
Vlws
T
thiagofmam
Consegui achar o problema…
Estava no expression, em vez de colocar no SelectOneMenu teria que colocar no SelectItens…
Map<Integer,String>mapListVariaveis=newHashMap<Integer,String>();----------------------HtmlSelectOneMenucombo=newHtmlSelectOneMenu();combo.setId("cmbPerfilSelecao"+idPerfilAtributo);//setar um IDFacesContextfacesContext=FacesContext.getCurrentInstance();Applicationapp=facesContext.getApplication();UISelectItemsitems=newUISelectItems();//ITEMS DO COMPONENTE HTMLSelectOneMenuitems.setValueExpression("value",app.getExpressionFactory().createValueExpression("#{detalheClienteMB.mapListVariaveis["+idPerfilAtributo+"]}",String.class));ArrayListvalores=newArrayList();