SpringBoot集成Beetl后统一处理页面异常的方法

 更新时间:2019年08月22日 14:36:53   作者:滕冲  
这篇文章主要介绍了SpringBoot集成Beetl后统一处理页面异常的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景

SpringBoot集成Beetl后如果页面出现异常会将出现异常之前的页面输出到客户端,但是由于页面不完整会导致用户看到的页面错乱或者空白,如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

在控制台可以看到

>>11:11:47:该方法未注册(FUNCTION_NOT_FOUND):err 位于8行 资源:modular/sys/login/login.html
5|  <title>Title</title>
6|</head>
7|<body>
8|  ${err()}
9|</body>
10|</html>

我们一般希望当出现异常时返回异常提示页面而不是不完整的页面。

设置ErrorHandler

Beetl默认发生页面异常时不对异常进行抛出,在文档中我们可以看到

2.2.3版本以后,新增加org.beetl.ext.web.WebErrorHandler,可以在web开发的时候在页面输出提示信息,在产品模式下在后台输出提示信息(通过配置属性ESOURCE.autoCheck= true来认为是开发模式),仅仅需要配置如下:
ERROR_HANDLER = org.beetl.ext.web.WebErrorHandler

所以这里设置ErrorHandler,使用Beetl提供的org.beetl.ext.web.WebErrorHandler

BeetlConfiguration beetlConfiguration = new BeetlConfiguration();
beetlConfiguration.setErrorHandler(new WebErrorHandler());

再次访问页面可以看到页面中显示了调用栈

根据环境做不同处理

在实际应用中,开发环境我们希望看到异常信息,生产环境希望看到的是统一的异常提示页面,而不是用户看不懂的代码信息,在org.beetl.ext.web.WebErrorHandler中可以看到

//判断是不是开发者模式,如果不是调用父类方法(默认输出控制台)
if (!Boolean.valueOf(e.gt.getConf().getProperty("RESOURCE.autoCheck"))){
 super.processExcption(e, writer);
}

这里通过配置属性ESOURCE.autoCheck= true来认为是开发模式,但是通过BeetlConfiguration.setConfigProperties设置ESOURCE.autoCheck=false后依然无效(模板不会热加载,但是这边依旧当做开发环境),也有可能是我设置不对的原因。
所以通过自定义WebErrorHandler解决此问题,通过判断spring.spring.active去判断当前环境;也可以抛出异常到全局异常统一处理。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Sprin中Bean的顺序使用及说明

    Sprin中Bean的顺序使用及说明

    这篇文章主要介绍了Sprin中Bean的顺序使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Spring oxm入门实例

    Spring oxm入门实例

    这篇文章主要介绍了Spring oxm入门实例,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • 浅谈Java内存模型之happens-before

    浅谈Java内存模型之happens-before

    于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?下面小编来简单介绍下
    2019-05-05
  • java基于servlet使用组件smartUpload实现文件上传

    java基于servlet使用组件smartUpload实现文件上传

    这篇文章主要介绍了java基于servlet使用组件smartUpload实现文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 使用java执行定时任务示例

    使用java执行定时任务示例

    这篇文章主要介绍了使用java执行定时任务示例,需要的朋友可以参考下
    2014-04-04
  • servlet过滤器(Filter)详解(九)

    servlet过滤器(Filter)详解(九)

    这篇文章主要为大家详细介绍了servlet过滤器Filter的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 浅析Java自定义注解的用法

    浅析Java自定义注解的用法

    注解为我们在代码中添加信息提供一种形式化的方法,使我们可以在源码、编译时、运行时非常方便的使用这些数据。本文主要为大家介绍了Java自定义注解的用法,希望对大家有所帮助
    2023-03-03
  • Alibaba Nacos配置中心动态感知原理示例解析

    Alibaba Nacos配置中心动态感知原理示例解析

    这篇文章主要介绍了Alibaba Nacos配置中心动态感知原理示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 排查Java进程内存占比过高的方法

    排查Java进程内存占比过高的方法

    某天下午运维反应集成环境的一个Java服务内存飙高,内存耗的太高了,会疑似内存泄漏,所以本文记一次排查Java进程内存占比过高的解决方法,需要的朋友可以参考下
    2023-10-10
  • 如何利用Java输出链表中倒数第k个结点

    如何利用Java输出链表中倒数第k个结点

    这篇文章主要给大家介绍了关于如何利用Java输出链表中倒数第k个结点的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友可以参考下
    2021-12-12

最新评论