[RESOLVIDO] Listbox de UF com JSF

Pessoal, bom dia. Ja pesquiso nesse forum há muito tempo, mas agora resolvi encarar Java de vez. :shock:
Preciso da ajuda de vocês. Embora simples, fiquei perdido ao preencher uma listbox e
salvar no banco com JSF. A lista não está sendo preenchida.
Peguei o exemplo daqui, mas me perdi: http://www.guj.com.br/java/82293-jsf---lista-com-os-dados-vindos-de-um-enun-como-eu-faco
Agradeço a ajuda.

<h:selectOneMenu id="estado"> <f:selectItems value="#{EmpresaMB.estados}" /> </h:selectOneMenu>

public class Empresa

@Enumerated(EnumType.STRING) @Column(name = "uf", length = 2) private Estados uf;
EmpresaMB

public Map<Estados, String> getEstados() { Map<Estados, String> est = new HashMap<Estados, String>(); for (Estados type : Estados.values()) { est.put(type, type.name()); } return est; }
Enum

[code]package modelo;

public enum Estados {
AC(“Acre”),
AL(“Alagoas”),
AM(“Amazonas”),
AP(“Amapá”),
BA(“Bahia”),
CE(“Ceará”),
DF(“Distrito Federal”),
ES(“Espirito Santo”),
GO(“Goias”),
MA(“Maranhão”),
MG(“Minas Gerais”),
MS(“Mato Grosso Sul”),
MT(“Mato Grosso”),
PA(“Pará”),
PB(“Paraiba”),
PE(“Pernanbuco”),
PI(“Piaui”),
PR(“Parana”),
RJ(“Rio de Janeiro”),
RN(“Rio Grande do Norte”),
RO(“Rondônia”),
RR(“Roraima”),
RS(“Rio Grande do Sul”),
SC(“Santa Catarina”),
SE(“Sergipe”),
SP(“São Paulo”),
TO(“Tocantins”);
private String estado;

    Estados(String estado) {  
        this.estado = estado;  
    }  
  
    public String getEstado() {  
        return estado;  
    }  
  
    @Override  
    public String toString() {  
        return estado;  
    }  

}[/code]

Sabe se o getEstados está sendo chamado ?

Tenta inserir no selectItems os campos
itemLabel e itemValue
e escrever o seguinte

  <f:selectItems value="#{EmpresaMB.estados}" var="estado" itemLabel="#{estado.value}" itemValue="#{estado.key}/>  

Elas estão lá na definição da classe Empresa: public Estados getUf() { return uf; } public void setUf(Estados uf) { this.uf = uf; }

[quote=lele_vader]Tenta inserir no selectItems os campos
itemLabel e itemValue
e escrever o seguinte

<f:selectItems value="#{EmpresaMB.estados}" var="estado" itemLabel="#{estado.value}" itemValue="#{estado.key}/> [/quote]

Não sei que valores entrariam na sugestão de itemLabel e itemValue. Acho que eu estou complicando demais. :cry:
Criar uma lista e permitir uma seleção não deve ser tão complicado assim. :!:

A questão de colocar esses dados é que os seus dados vem de um mapa.

Vai estados vai retornar um objeto entry, que possui os métodos getKey e getValue, sendo estado.value a String e estado.key o seu Enum;

[quote=lele_vader]A questão de colocar esses dados é que os seus dados vem de um mapa.

Vai estados vai retornar um objeto entry, que possui os métodos getKey e getValue, sendo estado.value a String e estado.key o seu Enum;[/quote]

Opa, resolvi aqui. Valeu ai pelo norte. Ficou assim: :lol:
Criei um ArrayList no bean:

public ArrayList<SelectItem> getComboUF() { ArrayList lista = new ArrayList(); lista.add(new SelectItem(null,"Selecione UF")); lista.add(new SelectItem("AC","Acre")); lista.add(new SelectItem("AL","Alagoas")); lista.add(new SelectItem("AM","Amazonas")); ... lista.add(new SelectItem("TO","Tocantins")); return lista; }
E no xhtml ficou assim:

<h:selectOneMenu value="#{empresaMB.uf}"> <f:selectItems value="#{empresaMB.comboUF}"/> </h:selectOneMenu>

Você não colocou cada estado na mão não né ?

O seu Enum tem um método chamado values, por ele poderia ter rodado cada um e pego o valor e o texto ao invés de fazer hardcoded.

[quote=lele_vader]Você não colocou cada estado na mão não né ?

O seu Enum tem um método chamado values, por ele poderia ter rodado cada um e pego o valor e o texto ao invés de fazer hardcoded.

[/quote]

Achei melhor descomplicar e não usei a definição de Enum e Map e deixei apenas a List, pois por enquanto eu não
preciso ter uma relação UFxCidades. Preciso apenas selecionar um Estado.