[struts2]struts2とFreemarkerで、テンプレートの実行時エラー表示を抑制する
- March 19th, 2010
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% [?]