在我的应用程序的某些部分,网页需要有一个包含 2 个选项的选择框 - 男性、女性。在应用程序的其他部分,选择框需要有 3 个选项 - 男性、女性或未知
在 g:select 中,如何传入 from 字段的枚举子集,同时不更改键或值参数的写入方式? g:select 位于 taglib 中并接受任何类型的 Enum(即使它显示性别,这实际上是 taglib 的传入字段),因此唯一的字段 可以更改的是调用 gsp 中的 from 字段。
普惠制:
<myapp:select fieldName="gender"
from="${Gender}"
value="${command?.gender?.key}" noSelection="${['':'No answer...']}" />
标签库:
<g:select name="${fieldName}"
from="${from.values()}"
keys="${from.values()*.name()}"
value="${value}"
noSelection="${noSelection}"/>
枚举类:
public enum Gender {
M('Male'),
F('Female'),
U('Unknown')
final String value
Gender(String value) {
this.value = value
}
public String toString() {
value
}
public String getKey() {
name()
}
public String getValue() {
value
}
}
或者有没有办法让 Gender 的子类具有附加的 U('Unknown') 选项。我也尝试过,但没有成功:
public static final List<Gender> getPartial() {
[M, F]
}
最佳答案
您可以在 GSP 上过滤它或将其完全移至 Controller 。
<g:select name="genderPreference" from="${GenderPreference.values().findAll {
!it.value.contains('Male')
}}"
keys="" value="${profileInstance?.genderPreference?.name()}" noSelection="['': '']"/>
您需要对您的Keys
执行同样的操作。也许将其移至您的 Controller 中会更好。
关于grails - 限制选择框的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19940961/