Dúvida Enum + SelectOneMenu [JSF]

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 :smiley:

Valeu Muito Obrigado.

Já eh! =D