freemarker 异常处理
2024-10-16 13:57:30
SSH2处理方案:
freemarker文件如果出错,网站的前台页面会报出很明显的错误-焦黄的背景,血红的文字,很不利于用户体验的。如何修改这个问题呢?
首先需要在struts.xml配置文件里添加下面一行代码:
1
|
<constant name="struts.freemarker.manager.classname" value="net.swiftlet.freemarker.MyFreemarkerManager" />
|
接着新建MyFreemarkerManager类,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public class MyFreemarkerManager extends org.apache.struts2.views.freemarker.FreemarkerManager
{
private static final Logger LOG = LoggerFactory.getLogger(MyFreemarkerManager.class);
public void init(ServletContext servletContext) throws TemplateException
{
config = createConfiguration(servletContext);
config.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
contentType = DEFAULT_CONTENT_TYPE;
wrapper = createObjectWrapper(servletContext);
if (LOG.isDebugEnabled())
{
LOG.debug("Using object wrapper of class " + wrapper.getClass().getName());
}
config.setObjectWrapper(wrapper);
templatePath = servletContext.getInitParameter(INITPARAM_TEMPLATE_PATH);
if (templatePath == null)
{
templatePath = servletContext.getInitParameter("templatePath");
}
configureTemplateLoader(createTemplateLoader(servletContext, templatePath));
loadSettings(servletContext);
}
}
|
SpringMVC-Freemarker异常配置
1、spring mvc的异常配置
spring mvc 提供了SimpleMappingExceptionResolver来处理异常,这里的只是由web 请求,经由controller引发的异常,无法处理freemarker的异常
2、freemarker自定义异常
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/** * freemarker页面上的异常控制 * 在webmvc-config.xml里面的freemarkerSettings里头配置 * @author scipio * @created 2014-02-01 */ public class FreemarkerExceptionHandler implements TemplateExceptionHandler { private static final Logger log = LoggerFactory .getLogger(FreemarkerExceptionHandler. class ); public void handleTemplateException(TemplateException te, Environment env, Writer out) throws TemplateException { log.warn( "[Freemarker Error: " + te.getMessage() + "]" ); throw new ViewException( "freemarker error" ,te); } } |
这里重新包装异常抛出(这种方式要求比较严格,因为freemarker对个别的错误,比如某个变量没有定义,可以忽略,只是后台抛异常,然后整个页面还是会渲染出来)
3、配置HtmlFreeMarkerConfigurer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
< bean id = "freemarkerConfig" class = "org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" > < property name = "templateLoaderPath" value = "/WEB-INF/views/" /> < property name = "freemarkerSettings" > < props > < prop key = "template_update_delay" >0</ prop > < prop key = "default_encoding" >UTF-8</ prop > < prop key = "locale" >zh_CN</ prop > < prop key = "url_escaping_charset" >UTF-8</ prop > < prop key = "whitespace_stripping" >true</ prop > < prop key = "number_format" >#</ prop > <!-- 配置自定义的freemarker异常处理--> < prop key = "template_exception_handler">com.persia.exception.FreemarkerExceptionHandler</ prop > </ props > </ property > </ bean > |
4、针对该异常,配置web.xml
1
2
3
4
5
|
<!--配置freemarker异常--> < error-page > < exception-type >com.persia.exception.ViewException</ exception-type > < location >/WEB-INF/views/error/viewException.ftl</ location > </ error-page > |
最新文章
- Oracle数据库常见的误操作恢复方法(上)
- css3 3d效果及动画学习
- notepad++ erlang开发环境设置
- centos下卸载rpm包
- Android开发之消息机制
- 全局负载均衡GSLB之“部署篇”
- 怎么看时序图--nand flash的读操作详解(转载)
- js内置函数大全及基本使用方法(一)
- ConcurrentHashMap和HashTable的区别
- ruban后台项目启动。进入断点
- Game Engine Architecture 11
- 几种序列化协议(protobuf,xstream,jackjson,jdk,hessian)相关数据对比
- MySQL表的定期分析检查优化
- update-alternatives符号连接的层数过多
- Markdown画各种图表
- 早前阅读live555源码做的笔记
- quartz 任务时间调度入门使用
- Controller组件- 集合点的功能-loadrunner
- 水晶报表VS2010防止出现用户登录问题
- RSA加密算法和签名算法
热门文章
- springboot1.4下hystrix dashboard Unable to connect to Command Metric Stream解决办法
- IOS开发UI篇之──自定义加载等待框(MBProgressHUD)
- Win7 maven安装及配置
- Chocolate Bar(暴力)
- 【转】在服务器上排除问题的头五分钟&;常用命令
- java integer String之equals vs ==
- Android程序运行时权限与文件系统权限的区别
- 博客没内容可写了怎么办?找BD!
- 安装MYSQL时出现libaio.so.1 is needed by MySQL-server-5.5,49.1等等
- 高斯过程(GP)