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真的是個很好用的工具,做出來的界面快捷,好看,雖然我現在碰到了很多坑,但是接受哪個新事件不是先從坑開始的呢,有坑不要緊,爬出來就行了。小菜鳥學的東西還很多,一步一坑吧,平常心,平常心。

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM