我已经安装了grails导出插件。它有一个元素导出:格式,它将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>
答案 0 :(得分:2)
您为taglib提供的参数只会影响Grails呈现的链接。如果您希望链接包含在页面呈现后更改的参数,例如datepickers选择的值,则需要使用Javascript。这是一个粗略的例子:
$('.menuButton a').click(function() {
var target = this.href + '&reportStartDate=' + $('#reportStartDate').val();
window.location.href = target;
return false;
});
理想情况下,您的导出按钮会提交包含日期选择器的表单,您不需要使用Javascript。你必须编写自己的格式taglib才能做到这一点。这将让你开始:
namespace = 'export'
,它可以覆盖插件的标签。将formats
代码从ExportTagLib
复制到新的代码库。<a>
标记更改为提交按钮:input(type: 'submit', name: 'format', value: format)
input(type: 'image', name: 'format', value: format, src: g.resource(plugin: 'export', dir: 'images/skin', file: format + '.png'))
<form>
标记周围添加<export:formats>
标记。您将无法在控制器中使用params.extension
,但要从格式中找出文件扩展名并不难。