为什么我们在g中使用闭包:select optionvalue

时间:2012-09-06 08:19:09

标签: grails groovy closures

我可以理解什么是闭包。我可以理解下面的例子。

    def list = ['a','b','c','d']
    def newList = []

    def clos = { it.toUpperCase() }
    list.collect( newList, clos )

assert newList == ["A", "B", "C", "D"]  

我去看g:选择文档。我在下面看到了。

 <g:select optionKey="id" optionValue="${{it.title?.toUpperCase()}}" name="book.title" from="${bookList}" />

我不理解$ {{it.title?.toUpperCase()}}。

我理解每个对象标题转换为大写的逻辑,但为什么我们需要双“{}”..

为什么使用$ {it.title?.toUpperCase()} 无法使用

文档链接enter link description here

1 个答案:

答案 0 :(得分:5)

外部$ {}不是闭包,是GSP Expression,只有内部{}是闭包。如果只放入$ {it.title?.toUpperCase()},则不传递参数一个闭包,而是实际的“it.title?.toUpperCase()”解析值。