Popular SelectOneMenu JSF, com uma classe Enum

03/05/2012

0

Boa Tarde,

Como fazer para popular um SelectOneMenu com uma Classe Enum? Olhei em alguns sites mas não consegui fazer.

Obrigado!
André Faresin

André Faresin

Responder

Post mais votado

03/05/2012

public enum Situacao {

ABERTO(ABE),
CONCLUIDO(CON),
PENDENTE(PEN),
CANCELADO(CAN),
ANDAMENTO(AND),
NA(N/A);

protected String descricao = null;

private Situacao(String descricao) {
this.descricao = descricao;
}


}

...........

private List<Situacao> situacoes;

public List<Situacao> getSituacoes() {
if(situacoes == null || situacoes.isEmpty()){
situacoes = new ArrayList<Situacao>();
for (Situacao sit : Situacao.values()) {
situacoes.add(sit);
}

}
return situacoes;
}

att Davi

Davi Costa

Davi Costa
Responder

Mais Posts

13/05/2012

Diogo Souza

public enum Situacao {

ABERTO(ABE),
CONCLUIDO(CON),
PENDENTE(PEN),
CANCELADO(CAN),
ANDAMENTO(AND),
NA(N/A);

protected String descricao = null;

private Situacao(String descricao) {
this.descricao = descricao;
}


}

...........

private List<Situacao> situacoes;

public List<Situacao> getSituacoes() {
if(situacoes == null || situacoes.isEmpty()){
situacoes = new ArrayList<Situacao>();
for (Situacao sit : Situacao.values()) {
situacoes.add(sit);
}

}
return situacoes;
}

att Davi

Só algumas ressalvas, no teu enum deve constar os valores das Strings entre aspas:
ABERTO(ABE), 
	CONCLUIDO(CON),
	PENDENTE(PEN),
	CANCELADO(CAN),
	ANDAMENTO(AND),
	NA(N/A);

Em relação à lista retornada para, creio eu, o componente <f:selectItems /> do JSF, deveria então ser uma lista de objetos SelectItems:
List<SelectItem> lista;

Passando, respectivamente, id e descriçao dos options pelo construtor do objeto! :-)
Responder

03/01/2016

Cristiane Freire

Obrigada pelo exemplo. Eu não estava sabendo como popular a List do enum no bean.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar