Grails在选择(下拉菜单)中为布尔值设置值
我正在使用Grails框架。在我的用户控制器中,有一个名为“active”的布尔字段,用于控制是否允许用户登录。登录操作在用户登录时检查此值 我的域名:Grails在选择(下拉菜单)中为布尔值设置值,grails,groovy,Grails,Groovy,我正在使用Grails框架。在我的用户控制器中,有一个名为“active”的布尔字段,用于控制是否允许用户登录。登录操作在用户登录时检查此值 我的域名: class User { Boolean active } 我的视图(edit.gsp): 该值正确地保存到数据库中,但我希望帐户状态下拉列表显示“已启用”或“已禁用”,而不是现在的“1”或“0” 加载编辑页面时,它还应显示当前值。当前,它始终显示值“1”,即使用户在数据库中的值为“0” 这似乎很容易,但我还没有找到任何人在GSP中设
class User {
Boolean active
}
我的视图(edit.gsp):
该值正确地保存到数据库中,但我希望帐户状态下拉列表显示“已启用”或“已禁用”,而不是现在的“1”或“0”
加载编辑页面时,它还应显示当前值。当前,它始终显示值“1”,即使用户在数据库中的值为“0”
这似乎很容易,但我还没有找到任何人在GSP中设置下拉值的例子,到目前为止我所做的任何尝试都不起作用。谢谢 我看到两种解决方案,都是
一个是标签的键
参数:
<g:select id="active" name="active" from="${['Enabled','Disabled']}" keys="${[1,0]}" value="${userInstance?.active}" />
在你看来:
<g:select id="active" name="active" from="${BooleanSelectOption.list}" optionKey="value" value="${userInstance?.active}" />
<g:select id="active" name="active" from="${[1,0]}" value="${userInstance?.active}" valueMessagePrefix="boolean.select" />
在你看来:
<g:select id="active" name="active" from="${BooleanSelectOption.list}" optionKey="value" value="${userInstance?.active}" />
<g:select id="active" name="active" from="${[1,0]}" value="${userInstance?.active}" valueMessagePrefix="boolean.select" />
如果需要,还可以为不同的语言使用不同的标签。您可以使用
optionKey
和optionValue
为键和值使用对象属性或映射值。试着这样做:
<g:select name="active" optionKey="key" optionValue="value"
from="${[[key: 1, value: 'Enabled'],[key: 0, value: 'Disabled']]}"/>
作为类似情况的替代方案,当出现比任务要求更多的处理时,请记住,您可以回退到普通的旧html。例如
<select name="active">
<option value="0" ${!active ? 'selected' : ''}>Disabled</option>
<option value="1" ${active ? 'selected' : ''}>Enabled</option>
</select>
残废
启用
我在代码中使用了第一种方法,现在您指出了第三种方法,我非常喜欢。同意,第三种使用valueMessagePrefix的方法看起来很不错。我今天一定是瞎了。我一遍又一遍地看文档,没有注意到关键行。非常感谢你。我必须将其设置为keys=“${[true,false]}”,才能正确显示值,这样我的经验与您的经验相符。第三条路很有趣。这是一个很好的答案,值得赞赏
<select name="active">
<option value="0" ${!active ? 'selected' : ''}>Disabled</option>
<option value="1" ${active ? 'selected' : ''}>Enabled</option>
</select>