2011-01-11 27 views
5

Tôi đang cố gắng để có được một truy vấn Tiêu chí được xuất sang CSV, Excel, những gì có bạn. Vấn đề tôi đang gặp phải là mã danh mục chạy sạch (như trong, không ném bất kỳ lỗi nào), nhưng nó không tạo ra bất kỳ dữ liệu nào. Tôi biết một thực tế rằng data là một ArrayList của Danh sách. Bất cứ ai có một workaround cho điều này, hoặc cho tôi biết nếu tôi đang làm điều gì đó sai?Làm cách nào để plugin Grails Export hoạt động đúng với truy vấn tiêu chí?

Dưới đây là đối tượng tên miền của tôi:

class Machine { 
    String name, 
      category 
    // constraints, etc 
} 

Dưới đây là hành động của tôi điều khiển (lấy chủ yếu từ plugin page):

def categories = { 
    if(params?.format && params.format != "html"){ 
response.contentType = ConfigurationHolder.config.grails.mime.types[params.format] 
response.setHeader("Content-disposition", "attachment; filename=categories.${params.extension}") 

    def data = Machine.createCriteria().list { 
     projections { 
      groupProperty("category") 
      countDistinct("id") 
     } 
    } 

    exportService.export(params.format, response.outputStream, data, [:], [:]) 
} 
+0

Câu lệnh "if" có thực sự được thực hiện không? –

+0

Có, nhưng bạn phải kiểm tra loại nội dung. Tôi quên tùy chọn chính xác cần được chuyển thành true trong tệp Config.groovy. – Pat

Trả lời

3

Dưới đây là một giải pháp khả thi mà tôi nghĩ đến ngay sau khi tôi gửi câu hỏi : Expando. Dưới đây là các thay đổi đối với phương pháp điều khiển:

// response stuff above 
def fields = ["category", "count"] 
def labels = ["category": "Category", "count": "# of machines" ] 

def data = Machine.createCriteria().list { 
    projections { 
     groupProperty("category") 
     countDistinct("id") 
    } 
}.collect { l -> new Expando("category": l[0], "count": l[1]) } 

exportService.export(params.format, response.outputStream, data, fields, labels, [:], [:]) 

Tôi đang khai thác thực tế là plugin Xuất tìm cách lấy giá trị từ một đối tượng. Vì vậy, tôi cho nó một đối tượng.

Nếu có giải pháp tốt hơn, tôi sẽ rất vui khi thấy nó.

+0

Expendo không hoạt động trên grails 3.1 trở lên và xuất plugin excel-export: 2.1 –

Các vấn đề liên quan