来源:叶子的投稿【Grails 学习笔记(九)– BIRT】。
本文主要介绍Grails下Birt的安装,配置,乱码,内存溢出,日期参数的输入问题及解决方法。
一、插件安装
需要Birt-Report和Quartz两个插件
- 安装Quartz
grails install-plugin quartz
注:Quartz是Birt-Report用到的一个插件,作用是定期扫描报表目录,只要上传后,会向Report和ReportParameter表插入报表名称,路径及参数。
- 安装Birt-Report
- 在线安装
grails install-plugin birt-report
如果在线安装有问题,可以尝试本地安装的方式
- 本地安装
准备工作
birt-runtime-2_6_1.zip grails-birt-report-2.6.1.0.zip
将birt-runtime-2_6_1.zip拷贝到 .grails/1.3.7/download目录,进入终端
cp /Users/leaf/Downloads/birt-runtime-2_6_1.zip /Users/icress/.grails/1.3.7/download/
开始安装
grails install-plugin /Users/icress/Downloads/grails-birt-report-2.6.1.0.zip
- 在线安装
二、配置
- 官方
birt { reportHome = "Reports" engineHome = "/var/apache2/tomcat/webapps/birt/WEB-INF/platform" imageUrl = "images/report" } environments { development { birt.engineHome = '..\\..\\birt-2.5.0\\platform' } } - 修改engineHome
插件安装好以后,默认在workspace的目录下面,我把它移到了web-app目录下面,这样做的好处是不用单独部署birt了,可以跟着程序一起打包,而且不用区分开发还是生产环境了,但是也有个坏处,打包部署的时候,包大了许多。修改配置:
engineHome = "birt-2.6.1/platform"
三、乱码问题
如果在开发或者部署过程中出现了乱码,可以试试下面的方法,修改ReportController
birtReportService.runAndRender(reportName, reportParams, htmlOptions)
为:
birtReportService.runAndRender(reportName, reportParams, htmlOptions).toString("UTF-8")四、内存溢出
- STS-配置RUN Configurations – VM arguments
-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true
- Tomcat,修改configure tomcat -> java -> Java Options
-Djava.awt.headless=true -Xms992M -Xmx992M -Xss1024K -XX:MaxPermSize=256M -XX:PermSize=256M
注:tomcat plugin里面的TomcatServer.groovy中这样写的
static DEFAULT_JVM_ARGS = ["-Xmx512m"]
我在后面加上了上述的参数后,仍会出现内存溢出的问题,不知道为什么。
五、日期参数(JQuery & JQuery UI)
Grails自带的datepicker真的有些让人吐血啊,而且这个插件的日期参数也是有问题的,所以小弟斗胆的改一下。
- 修改run.gsp,将日期部分修改成下面这样
g:textField name="${p.name}" value=""${reportParams[p.name]} $(function() { $( "#${p.name}" ).datepicker({dateFormat: 'yy-mm-dd'}); });注:run.gsp获取报表参数,并生成参数填写页面,可以根据报表参数变量类型(便如string对应text,Date对应datepicker等),前面之所以会修改Datepicker,是因为Grails自带的datepicker不好用,而且Birt不能正确接收传来的参数。
- 修改ReportController对应的部分
case 4: // DateTime case 7: // Date if(!params[p.name]){ if(!p.allowBlank ){ missing << p.name } }else{ reportParams[p.name] = params[p.name] } break - 使用JQuery和JQueryUI,原来的动画没有了,修改run.gsp
function displayWait(){ $('#form_pane').hide(); $('#wait_indicator').show(); return true; } - 版本
JQuery-1.6.1 JQueryUI-1.8.13
六、结束语
以上是我在使用过程中遇到的问题及解决的方法,写下来跟大家一起分享下,希望大家能够喜欢,谢谢!

最新评论
9 周 6 小时之前
9 周 1 天之前
11 周 5 天之前
11 周 5 天之前
17 周 2 天之前
17 周 4 天之前
19 周 3 天之前
20 周 1 天之前
20 周 2 天之前
20 周 5 天之前