【问题标题】:How to customise select tag in Grails如何在 Grails 中自定义选择标签
【发布时间】:2018-05-22 10:56:45
【问题描述】:

我在客户和产品之间有这种hasMany 关系。当我生成视图和控制器时,在产品的创建视图中我可以选择一个客户端。默认情况下,Grails 显示一个仅包含客户端 ID 的选择。我该如何改变呢?例如,我只想显示客户端的名称而不是 id。

我使用的是 Grails 3.3,这是域代码:

client.groovy

class client {
    String FirstName
    String LastName

    static hasMany = [products: Product]
}

product.groovy

class product {
    String Name
    int Price
    Client c

    static belongsTo = Client
}

【问题讨论】:

  • 您想坚持使用默认的脚手架模板,还是想触摸每个视图?

标签: select grails plugins field relation


【解决方案1】:

您可以通过指定optionKeyoptionValue 属性来自定义select 的外观:

<g:select from="${Client.list()}" name="client" optionKey="FirstName" optionValue="id" />

详情请见the ref doc

如果您需要做一些更有趣的事情,例如显示名字和姓氏,那么您可以对列表进行一些预处理:

<g:select from="${Client.list().collect{ [ id:it.id, name:it.firstName + ' ' + it.lastName ] }}" name="client" optionKey="name" optionValue="id" />

【讨论】:

    【解决方案2】:

    我相信默认生成的选择列表会使用对象的toString()方法作为每个&lt;option&gt;的显示值和键值的id。更改默认显示的最简单方法是在您的产品类中覆盖 toString()

    @Override
    String toString() {
      name
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      相关资源
      最近更新 更多