[struts2]struts2とFreemarkerで、テンプレートの実行時エラー表示を抑制する

struts2でFreemarkerを使っているとそのままでは、テンプレートにエラーが
あった場合に、そのまま黄色画面でエラー(StackTrace)が表示されてしまう。

それを出力されないようにするための、FreemarkerManagerを作って設定する。
(これよりもっとスマートな方法はないものか…)

import javax.servlet.ServletContext;

import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;

public class FreemarkerManager extends
		org.apache.struts2.views.freemarker.FreemarkerManager {

	@Override
    protected freemarker.template.Configuration createConfiguration(ServletContext servletContext) throws TemplateException {
        freemarker.template.Configuration configuration = new freemarker.template.Configuration();

        configuration.setTemplateLoader(getTemplateLoader(servletContext));

        configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);

        configuration.setObjectWrapper(getObjectWrapper());

        if( mruMaxStrongSize > 0 ) {
            configuration.setSetting(freemarker.template.Configuration.CACHE_STORAGE_KEY, "strong:" + mruMaxStrongSize);
        }

        if (encoding != null) {
            configuration.setDefaultEncoding(encoding);
        }

        loadSettings(servletContext, configuration);

        return configuration;
    }

}

struts.xmlに以下を記述。

	<!--  freemarker settings -->
	<constant name="struts.freemarker.manager.classname" value="com.bbt757.ktai.freemarker.FreemarkerManager" />


Popularity: 44% [?]

DiggGoogle BookmarksGoogle ReaderFacebookDeliciousFriendFeedEvernoteTwitterShare
  1. No comments yet.

  1. No trackbacks yet.