【发布时间】:2013-03-21 09:18:00
【问题描述】:
我的一个 GSP 中有一个 <g:select>,如下所示:
<g:select id="location" name="criteria.location" from="${example.Location.list()}" optionKey="id" required="" value="1" class="many-to-one"/>
预期的结果应该是这样的,对吧?
预期结果:
<select id="location" name="criteria.location" required="" class="many-to-one" >
<option value="1" selected="selected" >1st Location Name</option>
<option value="2" >2nd Location Name</option>
<option value="3" >3rd Location Name</option>
<!-- entries omitted -->
<option value="49" >49th Location Name</option>
<option value="50" >50th Location Name</option>
</select>
但是我得到了什么?我最终选择了 两个 项。第 49 个选项也被选中,我无法想象为什么!在我的代码中绝对没有提到值“49”...
实际结果:
<select id="location" name="criteria.location" required="" class="many-to-one" >
<option value="1" selected="selected" >1st Location Name</option>
<option value="2" >2nd Location Name</option>
<option value="3" >3rd Location Name</option>
<!-- entries omitted -->
<option value="49" selected="selected" >49th Location Name</option>
<option value="50" >50th Location Name</option>
</select>
例如,如果我将 <g:select> 中的 value 更改为“3”,则会选择第 3 个选项,但无论出于何种原因,第 49 个项目仍会被选中。
编辑:更奇怪的是,如果我将value 属性更改为大于 49 的值,则选择有效并且只选择了第n 个选项!
更新:我发布了一个答案,详细说明了它是如何工作的,但我仍然不明白 <g:select> 标记的原始行为。
有人知道这里发生了什么吗?
Grails 版本: 2.2.0
【问题讨论】:
-
选项 49 被“1”选中,因为“1”的 ASCII 值为 49(我刚刚花了半天的时间来跟踪同一个 bug。Arghhhh)
标签: grails gsp html-select