package example.ftl;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.TemplateException;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import java.io.IOException;
import java.util.List;
public class HtmlFreeMarkerConfigurer extends FreeMarkerConfigurer {
@Override
protected TemplateLoader getAggregateTemplateLoader(List<TemplateLoader> templateLoaders) {
logger.info("Using HtmlTemplateLoader to enforce HTML-safe content");
return new HtmlTemplateLoader(super.getAggregateTemplateLoader(templateLoaders));
}
@Override
protected void postProcessTemplateLoaders(List<TemplateLoader> templateLoaders) {
// spring.ftl from classpath will not work with the HtmlTemplateLoader
// use /WEB-INF/templates/spring.ftl instead
}
@Override
protected void postProcessConfiguration(Configuration config) throws IOException, TemplateException {
config.setTemplateExceptionHandler(new HtmlExceptionHandler());
}
}