<g:select name="division.id"
from="${divisionInstance}"
value="${name}"
optionKey="id"
optionValue="${{"${it}"}}"
noSelection="['':'Please select']"
required="" />
我想要发生什么,如果
divisionInstance.id == personInstance.divisionId
然后选择该项目
答案 0 :(得分:1)
应该像这样工作
<g:select name="division.id"
from="${divisionInstance}"
value="${personInstance.divisionId}"
optionKey="id"
optionValue="${{"${it}"}}"
noSelection="['':'Please select']"
required="" />
类似于select
标记文档中的最后一个示例:http://grails.org/doc/latest/ref/Tags/select.html
<g:select optionKey="id" value="${favoriteBook.id}"
name="book" from="${bookList}" />
在这种情况下,value应该包含favouriteBook的ID而不是book对象本身,因为optionKey被设置为id属性。
因此,在您的情况下,您有一个迭代列表,您的optionKey
设置为id
。 value
评估为true的条目将被选中。如果value
设置为${personInstance.divisionId}
,则选择条件为:
divisionInstance.id == personInstance.divisionId
答案 1 :(得分:0)
这可能不是在DRY之后,但它就像
一样简单<g:if test="${divisionInstance.id == personInstance.divisionId }>
<g:select name="division.id"
from="${divisionInstance}"
value="${personInstance.divisionId}"
optionKey="id"
optionValue="${{"${it}"}}"
noSelection="['':'Please select']"
required="" />
</g:if>
<g:else>
<g:select name="division.id"
from="${divisionInstance}"
value="${name}"
optionKey="id"
optionValue="${{"${it}"}}"
noSelection="['':'Please select']"
required="" />
</g:else>
我想知道是否不可能这样做:
<g:select name="division.id"
from="${divisionInstance}"
value="${if(divisionInstance.id == personInstance.divisionId){return personInstance.divisionId}else{return name}}"
optionKey="id"
optionValue="${{"${it}"}}"
noSelection="['':'Please select']"
required="" />
但我暂时无法测试