Meu p:selectOneMenu não seta meu Enum nem com reza braba! Ajudem-me!

Pessoal, possuo um Enum e quero que o usuário escolha uma alternativa por meio de um p:selectOneMenu. Minha página recupera os Enums do ManagedBean e as exibe sem problemas, porém quando o usuário escolhe o enum nada acontece, ou seja, o enum não é setado.

FiltroEnum

[code]public enum FiltroEnum {
TODOS(“TODOS”, “0”), ATIVADAS(“ATIVADAS”, “1”), INATIVADAS(“INATIVADAS”, “2”);

private String key;
private String value;

private FiltroEnum(String key, String value){
	this.key = key;
	this.value = value;
}

public String getKey() {
	return key;
}

public void setKey(String key) {
	this.key = key;
}

public String getValue() {
	return value;
}

public int getValueInteger() {
	return Integer.parseInt(value);
}

public void setValue(String value) {
	this.value = value;
}

}[/code]

ManagedBean

[code]//Enums
private FiltroEnum filtro;
private List filtros;

   @PostConstruct
public void init(){
	System.out.println("init()");
	this.filtros = Arrays.asList(FiltroEnum.values());
}

   public FiltroEnum getFiltro() {
	return filtro;
}

public void setFiltro(FiltroEnum filtro) {
	this.filtro = filtro;
}


   public List<FiltroEnum> getFiltros() {
	return filtros;
}

public void setFiltros(List<FiltroEnum> filtros) {
	this.filtros = filtros;
}


    public void preparaDataTable(){
	int filtro = Integer.parseInt(this.filtro.getValue());
	this.ras = this.getRArepository().getLista(filtro);
	Collections.sort(this.ras);
}

[/code]

xhtml

[code]<h:panelGrid columns=“2”>
<p:outputLabel value=“Exibir:” for=“exibir-select” styleClass=“label” />
<p:selectOneMenu id=“ra-exibir-select” value="#{rABean.filtro}" >

			<f:selectItems value="#{rABean.filtros}" var="f"
				itemLabel="#{f.key}" itemValue="#{f}"  />
			
			<p:ajax listener="#{rABean.preparaDataTable()}" update="dataTable"/>

		</p:selectOneMenu>
	
</h:panelGrid>[/code]


Desde já. agradeço a ajuda!

Como se trata de enum, acredito que você vai precisar de um converter.

[]'s

Pois é, eu vi vários exemplos que não usavam enums. Vi que não precisa, mas mesmo assim fiz um.

FiltroEnumConveter

@FacesConverter(forClass=FiltroEnum.class, value="filtroEnumConverter")
public class FiltroEnumConverter extends EnumConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext context, UIComponent componente, String enumKey) {
		for (FiltroEnum filtro : FiltroEnum.values()) {
			if(enumKey.equalsIgnoreCase(filtro.getKey())){
				return filtro;
			}
		}
		
		return null;
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object filtroEnum) {
		for (FiltroEnum filtro : FiltroEnum.values()) {
			if(filtroEnum.equals(filtro)){
				return filtro.getKey();
			}
		}
		return null;
	}

}


xhtml

<h:panelGrid columns="2">
		<p:outputLabel value="Exibir:" for="ra-exibir-select" styleClass="label"  />
		<p:selectOneMenu id="ra-exibir-select" value="#{rABean.filtro}" converter="filtroEnumConverter" >
				
				<f:selectItems value="#{rABean.filtros}" var="f"
					itemLabel="#{f}" itemValue="#{f}"  />
				
				<p:ajax listener="#{rABean.preparaDataTable()}" update="ra-dataTable"/>

			</p:selectOneMenu>
		
	</h:panelGrid>

E mesmo assim nada!

Esqueci de colocar o panelGrid dentro do h:form

XHTML - CORRETO

<h:form>
		<h:panelGrid columns="2">
			<p:outputLabel value="Exibir:" for="exibir-select"
				styleClass="label" />


			<p:selectOneMenu id="exibir-select" value="#{rABean.filtro}">

				<f:selectItems value="#{rABean.filtros}" var="f"
					itemLabel="#{f.key}" itemValue="#{f}" />

				<p:ajax listener="#{rABean.preparaDataTable()}"
					update=":localidade-listarView:dataTable" />

			</p:selectOneMenu>
</h:form>