как установить значения для атрибута params в экспорте: элемент форматов для плагина экспорта Grails - PullRequest
0 голосов
/ 02 июня 2011

Я установил плагин экспорта Grails.Он имеет элемент export: format, который принимает значение params в качестве атрибута.Я хочу знать, как установить значения из других элементов в этот атрибут params, чтобы он был доступен для моего действия контроллера.

<div id="exportDetail">
     <g:select name="reportType" from="${['Daily', 'Weekly Hour', 'Weekly Day']}" ></g:select><br/>
     <g:datePicker name="reportStartDate" precision="hour"></g:datePicker><br/>
     <g:datePicker name="reportEndDate" precision="hour"></g:datePicker><br/>
     <export:formats action="exportRollup" formats="['csv', 'excel', 'ods', 'pdf', 'rtf', 'xml']" params="[**how to pass select, datepicker stuff here to controller**]"/>
</div>

1 Ответ

2 голосов
/ 02 июня 2011

Параметры, которые вы даете taglib, влияют только на ссылку, предоставленную Grails.Если вы хотите, чтобы ссылка содержала параметры, изменяющиеся после рендеринга страницы, такие как значения, выбранные датчиками, тогда вам нужно использовать Javascript.Вот грубый пример:

 $('.menuButton a').click(function() {
     var target = this.href + '&reportStartDate=' + $('#reportStartDate').val();
     window.location.href = target;
     return false;
 });

В идеале, ваши кнопки экспорта отправят форму, содержащую указатели даты, и вам не нужно будет использовать Javascript.Вы должны написать свои собственные форматы taglib, чтобы сделать это.Это поможет вам начать:

  1. Создайте новый taglib в вашем проекте.Дайте ему namespace = 'export', чтобы он мог переопределять теги плагина.Скопируйте тег formats из ExportTagLib в новую метку.
  2. Измените тег <a> на кнопку отправки: input(type: 'submit', name: 'format', value: format)
  3. Если вы хотите использовать графические кнопки, используйте это вместо: input(type: 'image', name: 'format', value: format, src: g.resource(plugin: 'export', dir: 'images/skin', file: format + '.png'))
  4. Теперь вам понадобится тег <form> вокруг тега <export:formats> в вашем GSP.

Вы не сможете использовать params.extensionв вашем контроллере, но не сложно определить расширение файла по формату.

...