最新历史版本 :自定义出错页面 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

报表自带的抛错页面色调和整个应用的色调不一致如下图,项目里有自己统一的出错页面,因此需要使用自定义出错页面。

222

2. 思路编辑

服务器>服务器配置-出错模板定义直接调用自定义的出错页面如:/error.html,页面中可以通过模板出错参数 message、charset、exception 获取到报错信息。

222

在使用自定义出错页面的时候可以调用报表系统错误页面的参数,下面简单的列出参数以及说明。

  参数  说明
  message  提示错误信息
  charset  设置服务器的编码
  exception  错误异常堆栈信息

2.1 示例 error.html 页面

如上的参数可以通过${参数名}的形式调用。如在定义的 error.html 页面中调用参数 message 将提示错误信息显示在表格中,如下:

<html> <body> <table> <tr> <td> ${message} </td> </tr> </table> </body> </html>

2.2 报表中调用 error.html 页面

定义好的出错页面在服务器>服务器配置>出错模板定义的模板路径中调用,可以通过相对路径或绝对路径进行调用:

相对路径:自定义的出错页面 error.html 放在当前 Web 应用下,如 webroot 目录下,通过相对路径进行调用,模板路径为:/error.html

绝对路径:自定义的出错页面 error.html 放在其他应用下,通过绝对路径进行调用,模板路径为:http://www.xxx.com/error.html

3. 解决自定义出错页面中文乱码的问题编辑

在出错文字为中文的情况下,使用了 ${message},会出现乱码。比如找不到模板文件,错误代码:1304 没有找到模板文件: GettingStarted2.cpt

使用上述自定义出错信息的话,出错信息是这样的

222

后面的英文部分显示正常,中文部分却是乱码,显示不是我们需要的,那么如何解决呢?

1)出错的信息是通过 FR 进行转码过后的,中文会被显示成上述样式,为了还原,我们需要在 error.html 文件中使用 FR.cjkDecode() 来进行还原出错的信息,使用这个方法必须加

载 finereport.js 文件,路径为/webroot/decision/view/report?op=emb&resource=finereport.js,需要在 HTML 中引用,如下图:

222

2)由于页面使用的 ${message} 是在页面加载后完成的,所有 JS 转码部分必须写在body内部,在${message}之后,为了获取此信息,我们加一组 span 标签,class 设置为message,利用jQuery中的$('.message').text()就可以获取和设置信息内容了,如下图:    

222

注:在 JS 部分,不能直接使用${message}来获取出错信息内容,所以必须使用 jQuery 或其他方法来获取 span 中的信息内容。

完整的源代码如下:

<html> 
<head> 
    <script src="/WebReport/ReportServer?op=emb&resource=finereport.js">
    </script> 
</head> 
<body> 
    <table> 
        <tr>
          <td> 
              <span class='message'>${message}
              </span> 
          </td> 
          <td>
          </td> 
        </tr>
    </table>
    <script> $('.message').text(FR.cjkDecode($('.message').text())); //因为错误信息是转码之后的,必须解码 
    </script> 
</body> 
</html>

保存后再新刷新页面,即可看到新的出错信息了,如下图:

222

可以看到,已经正确地还原了出错信息了。