如何在Grails中定制select标记
我认为客户和产品之间有很多关系。当我生成视图和控制器时,在产品的“创建”视图中,我可以选择一个客户机。默认情况下,Grails显示一个仅包含客户端id的select。我怎样才能改变这一点?例如,我只想显示客户机的名称,而不是id 我使用的是Grails 3.3,以下是域代码: 客户端.groovy:如何在Grails中定制select标记,select,grails,plugins,field,relation,Select,Grails,Plugins,Field,Relation,我认为客户和产品之间有很多关系。当我生成视图和控制器时,在产品的“创建”视图中,我可以选择一个客户机。默认情况下,Grails显示一个仅包含客户端id的select。我怎样才能改变这一点?例如,我只想显示客户机的名称,而不是id 我使用的是Grails 3.3,以下是域代码: 客户端.groovy: class client { String FirstName String LastName static hasMany = [products: Product] }
class client {
String FirstName
String LastName
static hasMany = [products: Product]
}
class product {
String Name
int Price
Client c
static belongsTo = Client
}
产品。groovy:
class client {
String FirstName
String LastName
static hasMany = [products: Product]
}
class product {
String Name
int Price
Client c
static belongsTo = Client
}
我相信默认生成的选择列表将使用对象的
toString()
方法作为每个
的显示值和键值的id。更改默认显示的最简单方法是覆盖产品类中的toString()
:
@Override
String toString() {
name
}
通过指定
optionKey
和optionValue
属性,可以自定义select
的外观:
<g:select from="${Client.list()}" name="client" optionKey="FirstName" optionValue="id" />
有关详细信息,请参阅
如果您需要做一些更有趣的事情,比如显示名字和姓氏,那么您可以对列表进行一些预处理:
<g:select from="${Client.list().collect{ [ id:it.id, name:it.firstName + ' ' + it.lastName ] }}" name="client" optionKey="name" optionValue="id" />
您要坚持使用默认的脚手架模板,还是要触摸每个视图?