Bom dia Galera, gostaria muito de uma ajuda em relação ao tema. dei uma pesquisada montei talz… e queria saber se tem uma forma melhor de fazer isso, ou se está bom assim mesmo…
Tipo criei o enum abaixo.
public enum PessoaTipo {
PESSOA_FISICA("pessoaFisica", "Pessoa Física"), PESSOA_JURIDICA("pessoaJuridica", "Pessoa Jurídica");
private String key;
private String value;
private PessoaTipo(String key, String value){
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
public static Map<String, PessoaTipo> getMapPessoaTipoValues(){
Map<String, PessoaTipo> mapPessoaTipo = new LinkedHashMap<String, PessoaTipo>();
for(PessoaTipo pessoaTipo : PessoaTipo.values()){
mapPessoaTipo.put(pessoaTipo.getValue(), pessoaTipo);
}
return mapPessoaTipo;
}
e nele está criado esse metodo getMapPessoaTipoValues().
e tipo minha ideia foi criar uma key que no caso de precisar renderizar algo eu utilize a string do jeito que geralmente usamos, e o value seria o que geralmente o usuário ve no selectOneMenu…
ai no meu Bean eu só faço uma chamada desse metodo para as paginas poderem acessar
public class PessoaBean {
private PessoaTipo pessoaTipo;
public Map<String, PessoaTipo> getMapPessoaTipoValues(){
return PessoaTipo.getMapPessoaTipoValues();
}
Bom se puderem me dar umas dicas ficarei agradecido vlw.
Precisa desse map não. Faça um get assim no seu MB:public List<PessoaTipo> getPessoaTipo(){
return new ArrayList(PessoaTipo.values());
}
OBS.: Fiz de cabeça aqui, talvez algum método varie.
[quote=jakefrog]Precisa desse map não. Faça um get assim no seu MB:public List<PessoaTipo> getPessoaTipo(){
return new ArrayList(PessoaTipo.values());
}
OBS.: Fiz de cabeça aqui, talvez algum método varie.[/quote]
Jakefrog, selectOneMenu precisa utilizar um SelectItem ou nao necessariamente?
Se eu fosse seguir minha linha de raciocínio com o enum que vc passou
Eu add numa lista de SelectItem passando no construtor a chave e valor do seu enum.
[quote=six_machine][quote=jakefrog]Precisa desse map não. Faça um get assim no seu MB:public List<PessoaTipo> getPessoaTipo(){
return new ArrayList(PessoaTipo.values());
}
OBS.: Fiz de cabeça aqui, talvez algum método varie.[/quote]
Jakefrog, selectOneMenu precisa utilizar um SelectItem ou nao necessariamente?
Se eu fosse seguir minha linha de raciocínio com o enum que vc passou
Eu add numa lista de SelectItem passando no construtor a chave e valor do seu enum.[/quote]JSF 1.2 sim, JSF 2.0 não. [=
Mas dá para fazer a mesma coisa com select item. Basta criar uma lista de select Item, iterar em cima do enum (utilizando o values) com um for e retornar no get.
Fica a gosto do cliente. [=
Então mano, mas desse jeito, eu teria que por exemplo fazer assim…
<f:selectItems value="#{clientBean.pessoaTipo}" itemLabel="#{pessoaTipo.value}" itemValue="#{pessoaTipo}" var="pessoaTipo" />
e também teria q implementar um converter correto?
por que eu montando com akele map eu simplesmente faço assim…
<f:selectItems value="#{clientBean.mapPessoaTipo} />[/code]
Para enuns não precisa usar converter no JSF 2.0
\o/
E você não aponta para Map, coloca todo mundo num List que você vai ser feliz. [=
Então caro Jake…
num rolou setar em 1 list o values do Enum…
Mas Assim deu…
public PessoaTipo[] getPessoaTipoArray(){
return PessoaTipo.getPessoaTipo();
}
E no xhtml
<f:selectItems value="#{pessoaBean.pessoaTipoArray}" itemLabel="#{pessoaTipo.value}" itemValue="#{pessoaTipo}" var="pessoaTipo"/>
Mas ja está bem legal neh 
Valeu Muito Obrigado.