Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Grails中定制select标记_Select_Grails_Plugins_Field_Relation - Fatal编程技术网

如何在Grails中定制select标记

如何在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] }

我认为客户和产品之间有很多关系。当我生成视图和控制器时,在产品的“创建”视图中,我可以选择一个客户机。默认情况下,Grails显示一个仅包含客户端id的select。我怎样才能改变这一点?例如,我只想显示客户机的名称,而不是id

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

客户端.groovy

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" />

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