我<g:select>
的 GSP 中有一个如下所示:
<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>
例如,如果我将value
in my更改<g:select>
为“3”,则选择第 3 个选项,但无论出于何种原因,第 49 个项目仍会被选中。
编辑:更奇怪的是,如果我将value
属性更改为大于49 的值,则选择有效,并且只选择了第 n 个选项!
更新:我发布了一个答案,详细说明了它是如何工作的,但我仍然不明白<g:select>
标签的原始行为。
有谁知道这里发生了什么?
Grails 版本: 2.2.0