如何在Grails中实现虚拟值g:选择?

时间:2014-11-07 13:00:26

标签: html grails select gsp

在纯HTML中,我可能有<select>看起来像这样:

<select id="colors">
    <option id="0" selected="selected" value="choose">Choose a color</option>
    <option id="1" value="red">Red</option>
    <option id="2" value="blue">Blue</option>
    <option id="3" value="green">Green</option>
</select>

因此,第一个<option>只是一个“虚拟”值;也就是说,它只是填充文本,向用户解释他们必须选择颜色。我甚至可能会在它上面添加一些样式,使其显示为灰色/禁用,以便用户知道它不是一个可行的选择。

但在Grails中,我们将模型注入选择:

// Inside ColorsController
def index() {
    // Returns a list of 3 colors for: R, G, B
    List<String> colors = getRedGreenAdnBlue()

    render(view: "colors", model: colors)
}

// Inside colors.gsp
<g:select name="colors" from="${colors}" />

但是这只会产生:

<select id="colors">
    <option id="1" value="red">Red</option>
    <option id="2" value="blue">Blue</option>
    <option id="3" value="green">Green</option>
</select>

看看我现在如何丢失“选择颜色”虚拟值?我知道我可以在页面加载时执行一些jQuery,将此值插入选项列表的顶部,但我想知道这是否是Grails已经配备处理的使用模式。所以我问:是否有Grails解决此问题的方法?

1 个答案:

答案 0 :(得分:2)

使用noSelection:

<g:select name="colors" from="${colors}" noSelection="['':'Choose a color']"/>

以下是文档:http://grails.org/doc/latest/ref/Tags/select.html