org.apache.struts2.views.freemarker
Class FreemarkerResult

java.lang.Object
  extended by org.apache.struts2.dispatcher.StrutsResultSupport
      extended by org.apache.struts2.views.freemarker.FreemarkerResult
All Implemented Interfaces:
Result, Serializable, StrutsStatics

public class FreemarkerResult
extends StrutsResultSupport

Renders a view using the Freemarker template engine.

The FreemarkarManager class configures the template loaders so that the template location can be either

This result type takes the following parameters: Example:
 

 <result name="success" type="freemarker">foo.ftl</result>

 
 

See Also:
Serialized Form

Field Summary
protected  freemarker.template.Configuration configuration
           
protected  FreemarkerManager freemarkerManager
           
protected  ActionInvocation invocation
           
protected  String location
           
protected  freemarker.template.ObjectWrapper wrapper
           
 
Fields inherited from class org.apache.struts2.dispatcher.StrutsResultSupport
DEFAULT_PARAM
 
Fields inherited from interface org.apache.struts2.StrutsStatics
HTTP_REQUEST, HTTP_RESPONSE, PAGE_CONTEXT, SERVLET_CONTEXT, SERVLET_DISPATCHER, STRUTS_ACTION_TAG_INVOCATION, STRUTS_PORTLET_CONTEXT
 
Constructor Summary
FreemarkerResult()
           
FreemarkerResult(String location)
           
 
Method Summary
protected  freemarker.template.TemplateModel createModel()
          Build the instance of the ScopesHashModel, including JspTagLib support

Objects added to the model are

Application - servlet context attributes hash model JspTaglibs - jsp tag lib factory model Request - request attributes hash model Session - session attributes hash model request - the HttpServletRequst object for direct access response - the HttpServletResponse object for direct access stack - the OgnLValueStack instance for direct access ognl - the instance of the OgnlTool action - the action itself exception - optional : the JSP or Servlet exception as per the servlet spec (for JSP Exception pages) struts - instance of the StrutsUtil class

protected  Locale deduceLocale()
          Returns the locale used for the Configuration.getTemplate(String, Locale) call.
 void doExecute(String locationArg, ActionInvocation invocation)
          Execute this result, using the specified template locationArg.
protected  freemarker.template.Configuration getConfiguration()
          This method is called from doExecute(String, ActionInvocation) to obtain the FreeMarker configuration object that this result will use for template loading.
 String getContentType()
          allow parameterization of the contentType the default being text/html
protected  freemarker.template.ObjectWrapper getObjectWrapper()
          This method is called from doExecute(String, ActionInvocation) to obtain the FreeMarker object wrapper object that this result will use for adapting objects into template models.
protected  Writer getWriter()
          The default writer writes directly to the response writer.
 boolean isWriteIfCompleted()
           
protected  void postTemplateProcess(freemarker.template.Template template, freemarker.template.TemplateModel data)
          the default implementation of postTemplateProcess applies the contentType parameter
protected  boolean preTemplateProcess(freemarker.template.Template template, freemarker.template.TemplateModel model)
          Called before the execution is passed to template.process().
 void setContentType(String aContentType)
           
 void setFreemarkerManager(FreemarkerManager mgr)
           
 void setWriteIfCompleted(boolean writeIfCompleted)
          Writes to the stream only when template processing completed successfully
 void setWriter(Writer writer)
           
 
Methods inherited from class org.apache.struts2.dispatcher.StrutsResultSupport
conditionalParse, execute, getLastFinalLocation, getLocation, setEncode, setLocation, setParse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

invocation

protected ActionInvocation invocation

configuration

protected freemarker.template.Configuration configuration

wrapper

protected freemarker.template.ObjectWrapper wrapper

freemarkerManager

protected FreemarkerManager freemarkerManager

location

protected String location
Constructor Detail

FreemarkerResult

public FreemarkerResult()

FreemarkerResult

public FreemarkerResult(String location)
Method Detail

setFreemarkerManager

public void setFreemarkerManager(FreemarkerManager mgr)

setContentType

public void setContentType(String aContentType)

getContentType

public String getContentType()
allow parameterization of the contentType the default being text/html


doExecute

public void doExecute(String locationArg,
                      ActionInvocation invocation)
               throws IOException,
                      freemarker.template.TemplateException
Execute this result, using the specified template locationArg.

The template locationArg has already been interoplated for any variable substitutions

this method obtains the freemarker configuration and the object wrapper from the provided hooks. It them implements the template processing workflow by calling the hooks for preTemplateProcess and postTemplateProcess

Specified by:
doExecute in class StrutsResultSupport
Parameters:
locationArg - the location (jsp page, action, etc) to go to.
invocation - the execution state of the action.
Throws:
IOException
freemarker.template.TemplateException

getConfiguration

protected freemarker.template.Configuration getConfiguration()
                                                      throws freemarker.template.TemplateException
This method is called from doExecute(String, ActionInvocation) to obtain the FreeMarker configuration object that this result will use for template loading. This is a hook that allows you to custom-configure the configuration object in a subclass, or to fetch it from an IoC container.

The default implementation obtains the configuration from the ConfigurationManager instance.

Throws:
freemarker.template.TemplateException

getObjectWrapper

protected freemarker.template.ObjectWrapper getObjectWrapper()
This method is called from doExecute(String, ActionInvocation) to obtain the FreeMarker object wrapper object that this result will use for adapting objects into template models. This is a hook that allows you to custom-configure the wrapper object in a subclass.

The default implementation returns Configurable.getObjectWrapper()


setWriter

public void setWriter(Writer writer)

getWriter

protected Writer getWriter()
                    throws IOException
The default writer writes directly to the response writer.

Throws:
IOException

createModel

protected freemarker.template.TemplateModel createModel()
                                                 throws freemarker.template.TemplateModelException
Build the instance of the ScopesHashModel, including JspTagLib support

Objects added to the model are

Throws:
freemarker.template.TemplateModelException

deduceLocale

protected Locale deduceLocale()
Returns the locale used for the Configuration.getTemplate(String, Locale) call. The base implementation simply returns the locale setting of the action (assuming the action implements LocaleProvider) or, if the action does not the configuration's locale is returned. Override this method to provide different behaviour,


postTemplateProcess

protected void postTemplateProcess(freemarker.template.Template template,
                                   freemarker.template.TemplateModel data)
                            throws IOException
the default implementation of postTemplateProcess applies the contentType parameter

Throws:
IOException

preTemplateProcess

protected boolean preTemplateProcess(freemarker.template.Template template,
                                     freemarker.template.TemplateModel model)
                              throws IOException
Called before the execution is passed to template.process(). This is a generic hook you might use in subclasses to perform a specific action before the template is processed. By default does nothing. A typical action to perform here is to inject application-specific objects into the model root

Returns:
true to process the template, false to suppress template processing.
Throws:
IOException

isWriteIfCompleted

public boolean isWriteIfCompleted()
Returns:
true write to the stream only when template processing completed successfully (false by default)

setWriteIfCompleted

public void setWriteIfCompleted(boolean writeIfCompleted)
Writes to the stream only when template processing completed successfully



Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.