O JSF / Primefaces
consegue trabalhar com enum de forma simples, sem precisarmos implementar
conversores, basta passarmos para o componente uma lista com os valores da
classe enum para o componente JSF / Primefaces. Segue o código do ManagedBean:
public class CadastroModeloCarroBean {
... //outros atributos da classe
private List<Categoria> categorias;
@PostConstruct
public void init(){
... //outras
inicializações necessárias
categorias = Arrays.asList(Categoria.values());
}
... //outros métodos da
classe
public List<Categoria>
getCategorias(){
return categorias;
}
}
O atributo categorias trata-se de uma lista de itens da
própria enum Categoria. Note que para pegar todos os atributos e devolve-los em
forma de lista foi usado o seguinte código:
categorias = Arrays.asList(Categoria.values());
Dessa forma eu posso usar a lista criada a partir do enum
como qualquer outra lista. Veja no arquivo XHTML como fica:
<p:outputLabel value="Categoria"
for="categoria"/>
<p:selectOneMenu id="categoria"
value="#{cadastroModeloCarroBean.modeloCarro.categoria}">
<f:selectItem itemLabel="Selecione uma categoria"/>
<f:selectItems
value="#{cadastroModeloCarroBean.categorias}"
var="categoria" itemLabel="#{categoria}"
itemValue="#{categoria}"/>
</p:selectOneMenu>
E olha o código
da classe Categoria que é um enum:
public enum Categoria {
SEDAN("Sedan"), HATCH("Hatch"), SUV("SUV");
private String descricao;
public String
getDescricao(){
return this.descricao;
}
private Categoria(String descricao){
this.descricao = descricao;
}
}
Simples e funcional. Muito obrigado por passar seus conhecimentos.
ResponderExcluirDe nada, obrigado pela visita!
Excluir