Conversor de Enum

Prezados,

Estou enfrentando um problema no JSF 2.0

Estou utilizando um Enum no componente abaixo

<h:selectManyCheckbox value="#{objetoBean.objeto.enumTypes}" layout="pageDirection"> <f:ajax execute="@form" listener="#{objetoBean.resetIList()}" /> <f:selectItems value="#{enumTypes}" /> </h:selectManyCheckbox>

Na hora de recuperar o valor do objeto na bean eu pego uma string no lugar de um enum.

Acredito que para isso eu preciso de um conversor.

Gostaria de saber se há um conversor de enum e com implementa-lo.
Procurei no pai GOOGLE e não tive exito.

rodox,

Apesar de se pra JSF 1.2 a apostila da Algaworks http://www.algaworks.com/treinamentos/apostilas tem um tópico que fala sobre isso.

Não tive exito ao usar este conversor customizado.
Ele não pegava o valor do enum e no final não consegui pegar o valor. Bem quando eu não uso o conversor … o jsf me retorna uma string…
E gostaria de saber se no seam 3 tem este conversor…

Converte a String para seu enum, usando o método estático valueOf(String) presente em todos enums. Veja:

package teste;

public class Teste {

	enum Suit {
		SPADES, HEARTS, DIAMONDS, CLUBS
	}
	
	public static void main(String[] args) {
		if (Suit.valueOf("SPADES") == Suit.SPADES)
			System.out.println(Suit.SPADES);
		if (Suit.valueOf("HEARTS") == Suit.HEARTS)
			System.out.println(Suit.HEARTS);
		if (Suit.valueOf("DIAMONDS") == Suit.DIAMONDS)
			System.out.println(Suit.DIAMONDS);
		if (Suit.valueOf("CLUBS") == Suit.CLUBS)
			System.out.println(Suit.CLUBS);
	}
}

Prezados,

Pensei melhor na minha solução e consegui construir um converso para o meu enum e consegui o resolver o meu problema.

:smiley:

Segue abaixo a solução:




@FacesConverter("enumTypeConverter")
public class EnumTypeConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		if (value != null) {
			return EnumType.valueOf(value);
		}

		return null;
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		if (value != null && value instanceof EnumType) {
			return ((EnumType) value).name();
		}
		return null;
	}

}


Gostaria de saber como mudar o status do forum para resolvido…