即时报表新建及保存问题

需求:

客户基于润乾即时报表设计报表,设计完成报表保存时会弹出保存页面,让输入名称后保存,但是目前情况是不管是新建还是修改原有已经保存的结果都会让新保存,这样导致设计起来太过繁琐,并且不利于即时报表的使用。要求:能否新建的报表保存时弹出保存对话框,但是如果是打开已有配置文件,进行报表修改则不提示保存,默认对原有文件进行修改。

解决方案:

报表打开、保存是通过不同页面实现,所以后台可以通过session进行变量传递,将报表名存储到session中,然后通过不同页面判断session值从而可以确定是新建报表或者是加载已有报表,以及保存时能够能够根据session中的值进行默认存储。

应用根目录\jsbb下的loadConfig.jsp文件为加载即时报表的页面,可以在里边加入代码:

filename = new String(Base64.base64ToByteArray(filename));//文件名

session.setAttribute(“fileName”,filename);//将该文件名放到session中

这样就能在session中打开的即时报表配置文件名称。

打开应用根目录\jsbb\viewPage下的saveFile.jsp文件,该文件是保存时调用的文件,在该jsp中加入:

String fileName=(String)session.getAttribute(“fileName”);

if(fileName!=null){

response.sendRedirect(“doSaveFile.jsp”);

}

首先在session中获得报表名,判断文件名是否为空,如果为空,则证明是新建的报表,走原有流程即可,如果不为空,则表示当前是打开的已有配置,页面跳转到doSaveFile.jsp,在该页面中直接进行文件保存,而不用提示保存对话框,该jsp中从session中获得报表名,然后调用原有接口直接保存文件即可。

上述方式实现了如果打开已有配置文件的保存,后台是通过session方式传递信息,但此时如果客户再想新建报表,session值同样保留,所以要在新建报表页面中将session信息删除,

打开应用根目录\jsbb\ recreateReport.jsp

在里边加入代码,清除session即可:

String reportName = (String)session.getAttribute(“reportName”);

session.removeAttribute(“reportName”);

session.removeAttribute(“fileName”);

这样就能实现新建报表保存时弹出保存对话框,而修改原有报表时直接保存。

标签: