g:select gsp 标签内的条件

conditions inside g:select gsp tag

我正在使用 g:select 并希望设置默认选择值。但是,当默认值为 null 时,它应该显示 'Please select one'。但是,我似乎无法解决。

代码如下:

这是地址对象 - 选项包含在下拉列表中

Address
    Long id
    String name
    Sheriff sheriff
    String phaseCode

ListOfSheriffs 是一个 sheriffs 列表——包含 Sheriff 对象的列表

Sheriff
    Long id
    String name
    //other property here

defaultSheriff 是地址的默认警长

下面的代码是我的gsp

<g:select optionKey = "id" 
          optionValue = "${{sheriff.name +' '+sheriff.id}}"  
          name="sheriff.name"
          from="${ListOfSheriffs}"
          value="${(defaultSheriff == null) ? 'Please select one' : defaultSheriff}" />

然而,如果 defaultSheriff 为 null 'Please select one' 将不会显示,该页面仅显示 ListOfSheriffs 中的第一个警长。

我从 here 得到了这个解决方案 .不太确定我遗漏了什么。

另外,根据我在 docs 上阅读的内容,我尝试使用 noSelection。但是,结果是,页面下拉列表中的默认选定值始终是 'Please select one',即使 defaultSheriff 不为 null

<g:select optionKey = "id" 
          optionValue = "${{sheriff.name +' '+sheriff.id}}"  
          name="sheriff.name"
          from="${ListOfSheriffs}"
          value="${defaultSheriff}"
          noSelection="[null:'Please select one']" />

如果我提供的内容有任何不清楚之处,请随时指出,我很乐意详细说明。谢谢

我会说你需要这样的东西

<g:select optionKey = "id" 
          optionValue = "${{it.name +' '+ it.id}}"  
          name="sheriff.name"
          from="${ListOfSheriffs}"
          value="${sheriff?.id ?: defaultSheriff?.id}"
          noSelection="['':'Please select one']" />