将joinTables渲染为Grails中的列表

时间:2011-06-02 05:43:39

标签: grails view controller gsp jointable

我有两个域类:Car和Driver。我想创建一个gsp视图,在列表中显示Car和Driver信息,该列表或多或少是一个默认的scaffolded列表。例如:

Make  Model  Driver  Age
------------------------
Chevy Nova   Joe     20
Chevy Nova   Mike    30
Chevy Nova   Sally   40 

这是域类:

class Car {
  String make
  String model

  static constraints = { }
  static hasMany = [ drivers : Driver ]

  static mapping = {
    drivers joinTable: [name: 'Car_Driver', column: 'DRIVER_ID', key: 'CAR_ID']
  }
}

class Driver {
  String name
  int    age

  static constraints = { }  
}

开个车并给它一些司机:

def car = new Car(make: 'Chevy', model: 'Nova')
def driver1 = new Driver(name: 'Joe', age: 20)
def driver2 = new Driver(name: 'Mike', age: 30)
def driver3 = new Driver(name: 'Sally', age: 40)

car.addToDrivers(driver1)
car.addToDrivers(driver2)
car.addToDrivers(driver3)
car.save()

我需要在CarController和/或gsp视图中做什么才能使联合列表发生(并且仍然可以使用分页)?

1 个答案:

答案 0 :(得分:1)

如果Driver只能有一个Car,则需要Driver来引用Car,并且只需为{{1}呈现脚手架list }}

要调整列表列,您必须grails generate-views

如果Driver可以有多个Driver,并且您不想将Cars表拉入可见域模型(它没有自己的域名含义),那么建立一个脚手架 - 像Car_Driver一样使用SQL查询结果作为list。就像这里:SQL/Database Views in Grails

只需检查cardriverInstancesListPagedResultList。如果没有,您可以手动创建result,可以使用PagedResultListList轻松构建,您可以使用SQL找到它。