martes, 18 de noviembre de 2014

JSF 2.0: dropdown menu a partir de una enumaración

Si nos basamos en el ejemplo Mapeando enumeraciones con Hibernate podemos implementar una clase entity como sigue,

public class Users implements Serializable {
    
    private Integer id;    
    private String username;
    private String password;
    private Roles roles;
        
    public Users() {
    }
  
    --- getters & setters ---
}

Esta clase será llamada en el ManagedBean junto con la clase Roles. Por tanto el ManagedBean quedaría como sigue,

@ManagedBean(name = "userBean")
@ViewScoped
public class UserBean implements Serializable {
    
    private Users newUser = new Users();
    private Roles[] roleses;
    
    private final Roles roleAdmin = Roles.ADMINISTRATOR;
    private final Roles roleUser = Roles.USER;

    --- getters & setters ---
}

En esta clase hemos declarado Roles como un array y por tanto su método Get correspondiente se puede implementar de la siguiente manera,

public Roles[] getRoleses() {
    roleses = Roles.values();
    return roleses;
}

con lo que recuperamos los valores de la enumeración como String. Entonces la página JSF se podría implementar de la siguiente manera,

<h:outputLabel for="userRoles" value="Roles" />
<h:selectOneMenu id="userRoles" value="#{userBean.newUser.roles}" >
    <f:selectItem itemLabel="Select role" noSelectionOption="true" />
    <f:selectItems value="#{userBean.roleses}" var="role"
        itemValue="#{role}" itemLabel="#{role.role}"/>
</h:selectOneMenu> 

Podemos encontrar una información completa en Stackoverflow.com

No hay comentarios:

Publicar un comentario