org.apache.struts2.views.freemarker

## Class FreemarkerManager

- java.lang.Object
- - org.apache.struts2.views.freemarker.FreemarkerManager

-     public class FreemarkerManager
      extends Object

  Static Configuration Manager for the FreemarkerResult's configuration

  Possible extension points are:

  - createConfiguration method
  - loadSettings method
  - createTemplateLoader method
  - populateContext method

  createConfiguration method
  Create a freemarker Configuration.

  loadSettings method
  Load freemarker settings, default to freemarker.properties (if found in classpath)

  createTemplateLoader method
  create a freemarker TemplateLoader that loads freemarker template in the following order:

  1. path defined in ServletContext init parameter named 'templatePath' or 'TemplatePath' (must be an absolute path)
  2. webapp classpath
  3. struts's static folder (under [STRUT2_SOURCE]/org/apache/struts2/static/

  populateContext method
  populate the created model.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected boolean` | `altMapWrapper`
    `static String` | `ATTR_TEMPLATE_MODEL`
    `protected boolean` | `cacheBeanWrapper`
    `protected freemarker.template.Configuration` | `config`
    `static String` | `CONFIG_SERVLET_CONTEXT_KEY`
    `protected String` | `contentType`
    `protected boolean` | `debug`
    `static String` | `DEFAULT_CONTENT_TYPE`
    `protected String` | `encoding`
    `static String` | `EXPIRATION_DATE`
    `static String` | `INITPARAM_CONTENT_TYPE`
    `static String` | `INITPARAM_DEBUG`
    `static String` | `INITPARAM_NOCACHE`
    `static String` | `INITPARAM_TEMPLATE_PATH`
    `static String` | `KEY_APPLICATION`
    `static String` | `KEY_APPLICATION_PRIVATE`
    `static String` | `KEY_EXCEPTION`
    `static String` | `KEY_HASHMODEL_PRIVATE` Deprecated. since Struts 6.5.0, do not use as it will be removed in Struts 7.0.0
    `static String` | `KEY_INCLUDE` Deprecated. since Struts 6.5.0, do not use as it will be removed in Struts 7.0.0
    `static String` | `KEY_JSP_TAGLIBS`
    `static String` | `KEY_REQUEST`
    `static String` | `KEY_REQUEST_PARAMETERS` Deprecated. since Struts 6.5.0, do not use as it will be removed in Struts 7.0.0
    `static String` | `KEY_REQUEST_PARAMETERS_STRUTS`
    `static String` | `KEY_REQUEST_PRIVATE` Deprecated. since Struts 6.5.0, do not use as it will be removed in Struts 7.0.0
    `static String` | `KEY_SESSION`
    `protected int` | `mruMaxStrongSize`
    `protected boolean` | `nocache`
    `protected boolean` | `noCharsetInContentType`
    `protected Map<String,TagLibraryModelProvider>` | `tagLibraries`
    `protected String` | `templatePath`
    `protected String` | `templateUpdateDelay`
    `protected freemarker.template.ObjectWrapper` | `wrapper`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FreemarkerManager()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addSetting(String name, String value)`
    `protected ScopesHashModel` | `buildScopesHashModel(javax.servlet.ServletContext servletContext, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, freemarker.template.ObjectWrapper wrapper, ValueStack stack)`
    `ScopesHashModel` | `buildTemplateModel(ValueStack stack, Object action, javax.servlet.ServletContext servletContext, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, freemarker.template.ObjectWrapper wrapper)`
    `protected void` | `configureTemplateLoader(freemarker.cache.TemplateLoader templateLoader)` Sets the Freemarker Configuration's template loader with the FreemarkerThemeTemplateLoader at the top.
    `protected freemarker.template.Configuration` | `createConfiguration(javax.servlet.ServletContext servletContext)` Create the instance of the freemarker Configuration object.
    `protected freemarker.template.ObjectWrapper` | `createObjectWrapper(javax.servlet.ServletContext servletContext)`
    `protected freemarker.cache.TemplateLoader` | `createTemplateLoader(javax.servlet.ServletContext servletContext, String templatePath)` Create the template loader.
    `freemarker.template.Configuration` | `getConfig()`
    `freemarker.template.Configuration` | `getConfiguration(javax.servlet.ServletContext servletContext)`
    `String` | `getContentType()`
    `boolean` | `getDebug()`
    `protected freemarker.template.Version` | `getFreemarkerVersion(javax.servlet.ServletContext servletContext)`
    `boolean` | `getNocache()`
    `boolean` | `getNoCharsetInContentType()`
    `String` | `getTemplatePath()`
    `freemarker.template.ObjectWrapper` | `getWrapper()`
    `void` | `init(javax.servlet.ServletContext servletContext)`
    `protected void` | `loadSettings(javax.servlet.ServletContext servletContext)` Load the settings from the /freemarker.properties file on the classpath
    `protected void` | `populateContext(ScopesHashModel model, ValueStack stack, Object action, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`
    `void` | `setCacheBeanWrapper(String val)`
    `void` | `setContainer(Container container)`
    `void` | `setEncoding(String encoding)`
    `void` | `setFileManagerFactory(FileManagerFactory fileManagerFactory)`
    `void` | `setMruMaxStrongSize(String size)`
    `void` | `setTemplateUpdateDelay(String delay)`
    `void` | `setThemeTemplateLoader(FreemarkerThemeTemplateLoader themeTemplateLoader)`
    `void` | `setWrapperAltMap(String val)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### INITPARAM_TEMPLATE_PATH

          public static final String INITPARAM_TEMPLATE_PATH

      See Also:
        Constant Field Values

    - #### INITPARAM_NOCACHE

          public static final String INITPARAM_NOCACHE

      See Also:
        Constant Field Values

    - #### INITPARAM_CONTENT_TYPE

          public static final String INITPARAM_CONTENT_TYPE

      See Also:
        Constant Field Values

    - #### DEFAULT_CONTENT_TYPE

          public static final String DEFAULT_CONTENT_TYPE

      See Also:
        Constant Field Values

    - #### INITPARAM_DEBUG

          public static final String INITPARAM_DEBUG

      See Also:
        Constant Field Values

    - #### KEY_REQUEST

          public static final String KEY_REQUEST

      See Also:
        Constant Field Values

    - #### KEY_SESSION

          public static final String KEY_SESSION

      See Also:
        Constant Field Values

    - #### KEY_APPLICATION

          public static final String KEY_APPLICATION

      See Also:
        Constant Field Values

    - #### KEY_APPLICATION_PRIVATE

          public static final String KEY_APPLICATION_PRIVATE

      See Also:
        Constant Field Values

    - #### KEY_JSP_TAGLIBS

          public static final String KEY_JSP_TAGLIBS

      See Also:
        Constant Field Values

    - #### ATTR_TEMPLATE_MODEL

          public static final String ATTR_TEMPLATE_MODEL

      See Also:
        Constant Field Values

    - #### KEY_REQUEST_PARAMETERS_STRUTS

          public static final String KEY_REQUEST_PARAMETERS_STRUTS

      See Also:
        Constant Field Values

    - #### EXPIRATION_DATE

          public static final String EXPIRATION_DATE

    - #### KEY_INCLUDE

          @Deprecated
          public static final String KEY_INCLUDE

      Deprecated. since Struts 6.5.0, do not use as it will be removed in Struts 7.0.0
      See Also:
        Constant Field Values

    - #### KEY_REQUEST_PRIVATE

          @Deprecated
          public static final String KEY_REQUEST_PRIVATE

      Deprecated. since Struts 6.5.0, do not use as it will be removed in Struts 7.0.0
      See Also:
        Constant Field Values

    - #### KEY_REQUEST_PARAMETERS

          @Deprecated
          public static final String KEY_REQUEST_PARAMETERS

      Deprecated. since Struts 6.5.0, do not use as it will be removed in Struts 7.0.0
      See Also:
        Constant Field Values

    - #### KEY_HASHMODEL_PRIVATE

          @Deprecated
          public static final String KEY_HASHMODEL_PRIVATE

      Deprecated. since Struts 6.5.0, do not use as it will be removed in Struts 7.0.0
      See Also:
        Constant Field Values

    - #### CONFIG_SERVLET_CONTEXT_KEY

          public static final String CONFIG_SERVLET_CONTEXT_KEY

      See Also:
        Constant Field Values

    - #### KEY_EXCEPTION

          public static final String KEY_EXCEPTION

      See Also:
        Constant Field Values

    - #### templatePath

          protected String templatePath

    - #### nocache

          protected boolean nocache

    - #### debug

          protected boolean debug

    - #### config

          protected freemarker.template.Configuration config

    - #### wrapper

          protected freemarker.template.ObjectWrapper wrapper

    - #### contentType

          protected String contentType

    - #### noCharsetInContentType

          protected boolean noCharsetInContentType

    - #### encoding

          protected String encoding

    - #### altMapWrapper

          protected boolean altMapWrapper

    - #### cacheBeanWrapper

          protected boolean cacheBeanWrapper

    - #### mruMaxStrongSize

          protected int mruMaxStrongSize

    - #### templateUpdateDelay

          protected String templateUpdateDelay

    - #### tagLibraries

          protected Map<String,TagLibraryModelProvider> tagLibraries

  - ### Constructor Detail

    - #### FreemarkerManager

          public FreemarkerManager()

  - ### Method Detail

    - #### setEncoding

          public void setEncoding(String encoding)

    - #### setWrapperAltMap

          public void setWrapperAltMap(String val)

    - #### setCacheBeanWrapper

          public void setCacheBeanWrapper(String val)

    - #### setMruMaxStrongSize

          public void setMruMaxStrongSize(String size)

    - #### setTemplateUpdateDelay

          public void setTemplateUpdateDelay(String delay)

    - #### setContainer

          public void setContainer(Container container)

    - #### setFileManagerFactory

          public void setFileManagerFactory(FileManagerFactory fileManagerFactory)

    - #### setThemeTemplateLoader

          public void setThemeTemplateLoader(FreemarkerThemeTemplateLoader themeTemplateLoader)

    - #### getNoCharsetInContentType

          public boolean getNoCharsetInContentType()

    - #### getTemplatePath

          public String getTemplatePath()

    - #### getNocache

          public boolean getNocache()

    - #### getDebug

          public boolean getDebug()

    - #### getConfig

          public freemarker.template.Configuration getConfig()

    - #### getWrapper

          public freemarker.template.ObjectWrapper getWrapper()

    - #### getContentType

          public String getContentType()

    - #### getConfiguration

          public freemarker.template.Configuration getConfiguration(javax.servlet.ServletContext servletContext)

    - #### init

          public void init(javax.servlet.ServletContext servletContext)
                    throws freemarker.template.TemplateException

      Throws:
        `freemarker.template.TemplateException`

    - #### configureTemplateLoader

          protected void configureTemplateLoader(freemarker.cache.TemplateLoader templateLoader)

      Sets the Freemarker Configuration's template loader with the FreemarkerThemeTemplateLoader at the top.
      Parameters:
        `templateLoader` - the template loader
      See Also:
        `FreemarkerThemeTemplateLoader`

    - #### createConfiguration

          protected freemarker.template.Configuration createConfiguration(javax.servlet.ServletContext servletContext)
                                                                   throws freemarker.template.TemplateException

      Create the instance of the freemarker Configuration object.

      this implementation

      - obtains the default configuration from Configuration.getDefaultConfiguration()
      - sets up template loading from a ClassTemplateLoader and a WebappTemplateLoader
      - sets up the object wrapper to be the BeansWrapper
      - loads settings from the classpath file /freemarker.properties
      Parameters:
        `servletContext` - the servlet context
      Returns:
        a instance of the freemarker configuration object
      Throws:
        `freemarker.template.TemplateException` - in case of errors during creating the configuration

    - #### getFreemarkerVersion

          protected freemarker.template.Version getFreemarkerVersion(javax.servlet.ServletContext servletContext)

    - #### buildScopesHashModel

          protected ScopesHashModel buildScopesHashModel(javax.servlet.ServletContext servletContext,
                                                         javax.servlet.http.HttpServletRequest request,
                                                         javax.servlet.http.HttpServletResponse response,
                                                         freemarker.template.ObjectWrapper wrapper,
                                                         ValueStack stack)

    - #### createObjectWrapper

          protected freemarker.template.ObjectWrapper createObjectWrapper(javax.servlet.ServletContext servletContext)

    - #### createTemplateLoader

          protected freemarker.cache.TemplateLoader createTemplateLoader(javax.servlet.ServletContext servletContext,
                                                                         String templatePath)

      Create the template loader. The default implementation will create a `ClassTemplateLoader` if the template path starts with "class://", a `FileTemplateLoader` if the template path starts with "file://", and a `WebappTemplateLoader` otherwise.
      Parameters:
        `servletContext` - the servlet path
        `templatePath` - the template path to create a loader for
      Returns:
        a newly created template loader

    - #### loadSettings

          protected void loadSettings(javax.servlet.ServletContext servletContext)

      Load the settings from the /freemarker.properties file on the classpath
      Parameters:
        `servletContext` - the servlet context
      See Also:
        `for the definition of valid settings`

    - #### addSetting

          public void addSetting(String name,
                                 String value)
                          throws freemarker.template.TemplateException

      Throws:
        `freemarker.template.TemplateException`

    - #### buildTemplateModel

          public ScopesHashModel buildTemplateModel(ValueStack stack,
                                                    Object action,
                                                    javax.servlet.ServletContext servletContext,
                                                    javax.servlet.http.HttpServletRequest request,
                                                    javax.servlet.http.HttpServletResponse response,
                                                    freemarker.template.ObjectWrapper wrapper)

    - #### populateContext

          protected void populateContext(ScopesHashModel model,
                                         ValueStack stack,
                                         Object action,
                                         javax.servlet.http.HttpServletRequest request,
                                         javax.servlet.http.HttpServletResponse response)

Copyright © 2000–2026 Apache Software Foundation. All rights reserved.