finereport初体验

    新项目老大要求用finereport,当时真的是一头meng,第一次听说,用就用吧,前辈的话肯定是没错的。就开始上网看资料,老大带着走了一遍demo,就开始上手了,几天下来,发现真的太好用了,除了刚开始跟项目做整合的时候费了牛劲。现总结如下:

1:jfinal框架的拦截器会把所有servlet全部拦截掉,造成finereport的/ReportSevlet访问不到,经过小伙伴们的努力,终于解决,解决步骤如下:

(1)首先新写一个handler类   

public class FineReportHandler extends Handler {
    @Override
        public void handle(String target, HttpServletRequest request,
                           HttpServletResponse response, boolean[] isHandled) {
            // 对于非静态文件,和非指定排除的url实现过滤
            //我这里过滤的是资源文件和网站后台
           //需要过滤哪个servlet就添加哪个
            if (target.startsWith("/ReportServer")) {
                return ;
            }
            next.handle(target, request, response, isHandled);
        }

}

(2)然后在config 中加入handler

 @Override
    public void configHandler(Handlers me) {
        me.add(new ContextPathHandler("ctx"));
        me.add(new FineReportHandler());
    }

 这样一来就把finereport需要的servlet放开了,问题解决,另外web.xml 中关于finereport的配置如下

 <servlet>
        <servlet-name>ReportServer</servlet-name>
        <servlet-class>com.fr.web.ReportServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ReportServer</servlet-name>
        <url-pattern>/ReportServer</url-pattern>
</servlet-mapping>

2:finereport填报模式下,显示更新成功,数据库却一直没有更新内容,解决如下:

在设置报表填报属性时,提交类型选择智能提交,选择未修改不更新,然后,最重要的是,一定要给表设置主键,一定要设置主键,否则还可能会造成违反数据表唯一原则(主键重复原因)

3、由于finereport涉及很多数据库的操作,往往有时候出错了却不知道错误在哪儿,这时候就应该用上finereport的日志了,默认情况下,日志也只是显示个错误,执行的sql语句并不显示,这时候,在文件选项中选择日志的级别设置为DEBUG就可以了。

4、finereport多报表只需注意几点,模板web属性——》为该模板单独设置,设置工具栏等等,最重要的是设置只提交当前sheet,

另外还可以给每个模板添加各种事件js,等等等。

    总结就到这里,总而言之,finereport真的是个很好用的工具,做出来的界面快捷,好看,虽然我现在碰到了很多坑,但是接受哪个新事件不是先从坑开始的呢,有坑不要紧,爬出来就行了。小菜鸟学的东西还很多,一步一坑吧,平常心,平常心。

  

原文地址:https://www.cnblogs.com/adkii/p/8027999.html