grails - tipo - recorrer enum java
usar el valor de enum en g: seleccionar cuando enum es el atributo del objeto de selección (2)
Ejemplo:
batchTag es un atributo de tipo enumerado de un batchRange, con valores como los siguientes:
JAN1 "January Biweekly 1",
JAN2 "January Biweekly 2",
etc.
Quiero mostrar el VALOR de la etiqueta de lote en la selección, IOW, la selección debe contener
"January Biweekly 1"
"January Biweekly 2" ...
no
JAN1
JAN2
FEB1
FEB2
FEB3 ...
He intentado varias cosas en la g: seleccionar para hacer esto, pero sin éxito. Pensé que quizás "eso" estaría disponible como parte de g: select (ya que es claramente una iteración) y traté de hacer referencia a it.batchTag.name para optionValue, pero eso no funcionó. ¿Alguna sugerencia?
¡Gracias!
enum BatchRange {
JAN1 "January Biweekly 1",
JAN2 "January Biweekly 2",
final String value
BatchRange(String value) { this.value = value }
String toString() { value }
String getKey() { name() }
}
Tenga en cuenta el método getKey (). Y luego tu g: seleccionar
<g:select name="batch" from="${BatchRange.values()}" optionKey="key" />
o
<g:select name="batch" from="${BatchRange.values()}" keys="${BatchRange.values()*.name()}" />
Un mejor enfoque sería usar mensajes i18n en este caso. Hay dos opciones:
- Agregue valueMessagePrefix a la selección.
- Haga que la enumeración implemente
org.springframework.context.MessageSourceResolvable
como se describe en esta publicación de blog .
Vea esta pregunta para más información.