Отправка данных таблицы GSP на контроллер - PullRequest
0 голосов
/ 13 марта 2012

Я только начал изучать Grails, и это выглядит потрясающе. В настоящее время я играю с плагином экспорта. У меня есть таблица в GSP и кнопка отправки. Нажатие на кнопку должно экспортировать данные таблицы (экземпляры класса домена) в файл .csv. Кто-нибудь может мне с этим помочь? Я предполагаю, что у меня может быть скрытое поле в таблице, которое будет содержать идентификатор экземпляра модели домена, чем получить все эти идентификаторы с помощью jQuery и отправить его с Ajax как JSON для действия контроллера, а затем передать его в exportService. Должен ли я использовать метод $ .ajax или что-то еще? Или есть способ сделать это без AJAX?

Я новичок как в Grails, так и в jQuery / Ajax, так что какой-то простой пример был бы великолепен. Спасибо.

EDIT:

def results = bookCriteria.list(max: params.max as Integer, offset: params.offset as Integer) {
        and {
                'eq'("category","history")
                 ne("status", "Rented")

            }

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

      exportService.export(params.format, response.outputStream, results, [:], [:])

    }

У меня что-то подобное в контроллере. Но он возвращает только первые 50 строк (из-за подкачки). Как справиться с подкачкой страниц, но иметь возможность экспортировать все соответствующие строки?

1 Ответ

0 голосов
/ 13 марта 2012

Вам просто нужно отправить данные из вашей таблицы на сервер, если пользователь может изменить значения вашей таблицы.Это действительно ваш случай?Если нет - вам не нужно использовать AJAX.

Посмотрите на описание плагина .Там вы можете найти несколько основных примеров.

В общем, вы делаете простой запрос к своему действию, извлекаете данные, которые хотите экспортировать, вызываете exportService и изменяете response, как описано на странице плагина..

Базовый пример со страницы плагина:

def list = {
   if(!params.max) params.max = 10

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

      exportService.export(params.format, response.outputStream,Book.list(params), [:], [:]) 
   }
   [ bookInstanceList: Book.list( params ) ] 
}

Редактировать: Вот некоторый код, как вы можете получить все книги в случае экспорта:

def results = bookCriteria.list {
   and {
      'eq'("category","history")
      ne("status", "Rented")
   }

   if(!params?.format || params.format == "html") {
      maxResults(params.max.toInteger())
      firstResult(params.offset.toInteger())
   }
}

Вы можете заменить if(!params?.format || params.format == "html") любым другим условием, которое указывает, что вы не хотите перечислять все результаты.Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...