0
<g:select name="division.id"
    from="${divisionInstance}"
    value="${name}" 
    optionKey="id"
    optionValue="${{"${it}"}}"
    noSelection="['':'Please select']"
    required="" />

我想要发生的事情,如果

divisionInstance.id == personInstance.divisionId 

然后选择该项目

4

2 回答 2

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 
于 2013-11-11T18:26:52.810 回答
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="" />

但我目前无法测试

于 2013-11-11T18:28:47.103 回答