Escribo este post para todos los que alguna vez sufrieron buscando un ejemplo claro y simple de como crear un combobox en base a un Enum en JSF y Seam.
La documentación de Seam (tan clara como el agua) nos nuestra el siguiente ejemplo:
<h:selectOneMenu value="#{person.honorific}"> <s:selectItems value="#{honorifics}" var="honorific" label="#{honorific.label}" noSelectionLabel="Please select" /> <s:convertEnum /> </h:selectOneMenu>
Donde solo muestran el ejemplo puntual sin dar mayor detalle.
Googleando un poco encontré la siguiente página web donde se dan el trabajo de explicar de una manera sencilla como crear el combobox.
En esa página se muestra el siguiente ejemplo:
XHTML:
<h:selectOneMenu id="marketStatus" value="#{person.status}" required="true"> <s:selectItems value="#{enumLists.statusArray}" var="status" label="#{status}" noSelectionLabel="Select a status..."/> <s:convertEnum/> </h:selectOneMenu>
ENUM:
@Name("enumLists") @Scope(ScopeType.STATELESS) public class EnumLists { public Status[] getStatusArray() { return Status.values(); } }
Como se puede ver en el ejemplo han expuesto el Enum como un Seam bean stateless y retornando la lista de valores con status.values().
Para poner un label a cada opción utilizan el toString() del Enum dado que en label colocan label=”#{status}”
Como pueden ver hacer un combobox basado en un Enum es bastante sencillo y útil.
No related posts.
