Какие существуют способы обработки ошибок в шаблоне FreeMarker?

Как подавить ошибку шаблона FreeMarker? Я смотрю здесь:http://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html Но я не понимаю, как "TemplateExceptionHandler.IGNORE_HANDLER." Я использую Struts2, а также как показать другую страницу FTP вместо отображения трассировки стека?

class MyTemplateExceptionHandler implements TemplateExceptionHandler {
    public void handleTemplateException(TemplateException te, Environment env, java.io.Writer out)
            throws TemplateException {
        try {
            out.write("[ERROR: " + te.getMessage() + "]");
        } catch (IOException e) {
            throw new TemplateException("Failed to print error message. Cause: " + e, env);
        }
    }
}

...

cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());

Нашел вышеуказанный кусок вhttp://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html Как мне это использовать? Эта последняя строка, откуда берется cfg?

«Главная точка входа в API FreeMarker» ...http://massapi.com/source/freemarker-2.3.18/src/freemarker/template/Configuration.java.html

Итак, это основная точка входа, я думаю, что cfg происходит из этого класса. Я все еще не вижу, как контроллер войдет в мой класс MyTemplateExceptionHandler.

Куда должна идти следующая строка?

cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());

И это просто вопрос размещения этой строки в правильном месте?

Вот так выглядит мой текущий класс:

    import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.Properties;

import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.cache.WebappTemplateLoader;
import freemarker.core.Environment;
import freemarker.ext.beans.BeansWrapper;
import freemarker.ext.jsp.TaglibFactory;
import freemarker.ext.servlet.HttpRequestHashModel;
import freemarker.ext.servlet.HttpRequestParametersHashModel;
import freemarker.ext.servlet.HttpSessionHashModel;
import freemarker.ext.servlet.ServletContextHashModel;
import freemarker.template.ObjectWrapper;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;
import freemarker.template.TemplateModel;

import javax.servlet.GenericServlet;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.views.JspSupportServlet;
import org.apache.struts2.views.freemarker.FreemarkerManager;
import org.apache.struts2.views.freemarker.ScopesHashModel;
import org.apache.struts2.views.freemarker.StrutsBeanWrapper;
import org.apache.struts2.views.freemarker.StrutsClassTemplateLoader;
import org.omg.CORBA.PUBLIC_MEMBER;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.util.FileManager;
import com.opensymphony.xwork2.util.ValueStack;

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

    freemarker.template.Configuration configuration = new freemarker.template.Configuration();

    public MyTemplateExceptionHandler() {
        System.out.println("MyTemplateExceptionHandler constructor()");
        configuration.setTemplateExceptionHandler(new Test1());
    }

    class Test1 implements TemplateExceptionHandler {

        @Override
        public void handleTemplateException(TemplateException te, Environment env, java.io.Writer out) throws TemplateException {
            System.out.println("MyTemplateExceptionHandler1 handleTemplateException()");
            try {
                out.write("[ERROR TEST TEST: " + te.getMessage() + "]");
            } catch (IOException e) {
                throw new TemplateException("Failed to print error message. Cause: " + e, env);
            }
        }
    }
}

Мой код входит в конструктор MyTemplateExceptionHandler (). Но не в MyTemplateExceptionHandler1 handleTemplateException (). Что мне нужно сделать?

Я все еще вижу желтую трассировку стека FTL.

То же самое указывается в этом блоге:http://blog.cherouvim.com/freemarker-exception-handling/ Где я могу настроить свой бесплатный маркер и как? Я все еще застрял в том, куда должна идти эта линия.

Мой другой вопрос: класс, размещенный в блоге, кажется внутренним, я просто помещаю этот внутренний класс в любой класс или это внешний класс?

Ответы на вопрос(3)

Ваш ответ на вопрос