自定义freemarker异常处理小结

项目中应用到了struts2的视图freemarker来生成动态页面,但是freemarker的异常信息是直接显示在页面上的,怎么让其受控呢?

一、找

找到struts2的包如图所示:


再找到default.properties,打开如图所示:


看上图struts2里是怎么配置freemarker的。自定义内容就可以在struts.xml文件里配置上。把struts.freemarker.manager.classname的属性给配置上即可。

二、创建必要的类

1、继承FreemarkerManager类

public class CreateBssSiteFreemarkerManager extends FreemarkerManager {

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.apache.struts2.views.freemarker.FreemarkerManager#init(javax.servlet
	 * .ServletContext)
	 */
	@Override
	public void init(ServletContext servletContext) throws TemplateException {
		super.init(servletContext);
		// 此处亦可以改成TemplateExceptionHandler.RETHROW_HANDLER,则不必写异常处理类
		config.setTemplateExceptionHandler(new CreateBssSiteTemplateExceptionHandler());
		
	}

}

2、继承TemplateExceptionHandler接口

public class CreateBssSiteTemplateExceptionHandler implements
		TemplateExceptionHandler {

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * freemarker.template.TemplateExceptionHandler#handleTemplateException(
	 * freemarker.template.TemplateException, freemarker.core.Environment,
	 * java.io.Writer)
	 */
	@Override
	public void handleTemplateException(TemplateException arg0,
			Environment arg1, Writer arg2) throws TemplateException {

		arg0.printStackTrace();
		throw arg0;

	}

}

三、配置struts.xml

<constant name="struts.freemarker.manager.classname"
		value="com.xxx.CreateBssSiteFreemarkerManager" />
四、why

请参考struts2的相关内容。

ps:请不要在struts.xml里留下不正确的属性配置。项目里的一个上传配置搞定我等刚接触之小白云里雾里。立此为证:

<!-- <constant name="struts.multipart.parser" value="Refactor" /> -->
因Refactor为未知物体,故上传文件总是失败。注释掉后问题解决。

小结结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值