类 FreeMarkerView
- java.lang.Object
- org.springframework.web.reactive.result.view.AbstractView
- org.springframework.web.reactive.result.view.AbstractUrlBasedView
- org.springframework.web.reactive.result.view.freemarker.FreeMarkerView
- 所有已实现的接口:
Aware
,BeanNameAware
,InitializingBean
,ApplicationContextAware
,View
public class FreeMarkerView extends AbstractUrlBasedView
AView
implementation that uses the FreeMarker template engine.Depends on a single
FreeMarkerConfig
object such asFreeMarkerConfigurer
being accessible in the application context. Alternatively the FreeMarkerConfiguration
can be set directly on this class viasetConfiguration(freemarker.template.Configuration)
.The
url
property is the location of the FreeMarker template relative to the FreeMarkerConfigurer'stemplateLoaderPath
.Note: Spring's FreeMarker support requires FreeMarker 2.3 or higher.
- 从以下版本开始:
- 5.0
- 作者:
- Rossen Stoyanchev, Sam Brannen
字段概要
字段 修饰符和类型 字段 说明 static String
SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE
Attribute name of theRequestContext
instance in the template model, available to Spring's macros — for example, for creatingBindStatus
objects.从类继承的字段 org.springframework.web.reactive.result.view.AbstractView
logger, REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME
从接口继承的字段 org.springframework.web.reactive.result.view.View
BINDING_CONTEXT_ATTRIBUTE
构造器概要
构造器 构造器 说明 FreeMarkerView()
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 void
afterPropertiesSet()
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.protected FreeMarkerConfig
autodetectConfiguration()
Autodetect aFreeMarkerConfig
object in theApplicationContext
.boolean
checkResourceExists(Locale locale)
Check that the FreeMarker template used for this view exists and is valid.protected freemarker.template.Configuration
getConfiguration()
Get the FreeMarkerConfiguration
used by this view.protected String
getEncoding()
Get the encoding for the FreeMarker template.protected reactor.core.publisher.Mono<Map<String,Object>>
getModelAttributes(Map<String,?> model, ServerWebExchange exchange)
Prepare the model to use for rendering by potentially exposing aRequestContext
for use in Spring FreeMarker macros and then delegating to the inherited implementation of this method.protected freemarker.template.ObjectWrapper
getObjectWrapper()
Get the configured FreeMarkerObjectWrapper
, or the default wrapper if none specified.protected freemarker.template.Template
getTemplate(Locale locale)
Get the FreeMarker template for the given locale, to be rendered by this view.protected freemarker.template.SimpleHash
getTemplateModel(Map<String,Object> model, ServerWebExchange exchange)
Build a FreeMarker template model for the given model map.protected freemarker.template.Configuration
obtainConfiguration()
Obtain the FreeMarkerConfiguration
for actual use.protected reactor.core.publisher.Mono<Void>
renderInternal(Map<String,Object> renderAttributes, MediaType contentType, ServerWebExchange exchange)
Subclasses must implement this method to actually render the view.void
setConfiguration(freemarker.template.Configuration configuration)
Set the FreeMarkerConfiguration
to be used by this view.void
setEncoding(String encoding)
Set the encoding of the FreeMarker template file.void
setExposeSpringMacroHelpers(boolean exposeSpringMacroHelpers)
Set whether to expose aRequestContext
for use by Spring's macro library, under the name "springMacroRequestContext".从类继承的方法 org.springframework.web.reactive.result.view.AbstractUrlBasedView
getUrl, setUrl, toString
从类继承的方法 org.springframework.web.reactive.result.view.AbstractView
createRequestContext, formatViewName, getApplicationContext, getBeanName, getDefaultCharset, getRequestContextAttribute, getRequestDataValueProcessor, getSupportedMediaTypes, obtainApplicationContext, render, resolveAsyncAttributes, resolveAsyncAttributes, setApplicationContext, setBeanName, setDefaultCharset, setRequestContextAttribute, setSupportedMediaTypes
从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
从接口继承的方法 org.springframework.web.reactive.result.view.View
isRedirectView
字段详细资料
SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE
public static final String SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE
Attribute name of theRequestContext
instance in the template model, available to Spring's macros — for example, for creatingBindStatus
objects.- 从以下版本开始:
- 5.2
- 另请参阅:
setExposeSpringMacroHelpers(boolean)
, 常量字段值
构造器详细资料
FreeMarkerView
public FreeMarkerView()
方法详细资料
setConfiguration
public void setConfiguration(@Nullable freemarker.template.Configuration configuration)
Set the FreeMarkerConfiguration
to be used by this view.Typically this property is not set directly. Instead a single
FreeMarkerConfig
is expected in the Spring application context which is used to obtain the FreeMarker configuration.
getConfiguration
@Nullable protected freemarker.template.Configuration getConfiguration()
Get the FreeMarkerConfiguration
used by this view.
obtainConfiguration
protected freemarker.template.Configuration obtainConfiguration()
Obtain the FreeMarkerConfiguration
for actual use.- 返回:
- the FreeMarker configuration (never
null
) - 抛出:
IllegalStateException
- in case of noConfiguration
object set- 另请参阅:
getConfiguration()
setEncoding
public void setEncoding(@Nullable String encoding)
Set the encoding of the FreeMarker template file.By default
FreeMarkerConfigurer
sets the default encoding in the FreeMarker configuration to "UTF-8". It's recommended to specify the encoding in the FreeMarkerConfiguration
rather than per template if all your templates share a common encoding.
getEncoding
@Nullable protected String getEncoding()
Get the encoding for the FreeMarker template.
setExposeSpringMacroHelpers
public void setExposeSpringMacroHelpers(boolean exposeSpringMacroHelpers)
Set whether to expose aRequestContext
for use by Spring's macro library, under the name "springMacroRequestContext".Default is
true
.Needed for Spring's FreeMarker default macros. Note that this is not required for templates that use HTML forms unless you wish to take advantage of the Spring helper macros.
- 从以下版本开始:
- 5.2
- 另请参阅:
SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE
afterPropertiesSet
public void afterPropertiesSet() throws Exception
从接口复制的说明:InitializingBean
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
- 指定者:
afterPropertiesSet
在接口中InitializingBean
- 覆盖:
afterPropertiesSet
在类中AbstractUrlBasedView
- 抛出:
Exception
- in the event of misconfiguration (such as failure to set an essential property) or if initialization fails for any other reason
autodetectConfiguration
protected FreeMarkerConfig autodetectConfiguration() throws BeansException
Autodetect aFreeMarkerConfig
object in theApplicationContext
.- 返回:
- the
FreeMarkerConfig
instance to use for this view - 抛出:
BeansException
- if noFreeMarkerConfig
instance could be found- 另请参阅:
setConfiguration(freemarker.template.Configuration)
checkResourceExists
public boolean checkResourceExists(Locale locale) throws Exception
Check that the FreeMarker template used for this view exists and is valid.Can be overridden to customize the behavior, for example in case of multiple templates to be rendered into a single view.
- 指定者:
checkResourceExists
在类中AbstractUrlBasedView
- 参数:
locale
- the desired Locale that we're looking for- 返回:
false
if the resource existsfalse
if we know that it does not exist- 抛出:
Exception
- if the resource exists but is invalid (e.g. could not be parsed)
getModelAttributes
protected reactor.core.publisher.Mono<Map<String,Object>> getModelAttributes(@Nullable Map<String,?> model, ServerWebExchange exchange)
Prepare the model to use for rendering by potentially exposing aRequestContext
for use in Spring FreeMarker macros and then delegating to the inherited implementation of this method.
renderInternal
protected reactor.core.publisher.Mono<Void> renderInternal(Map<String,Object> renderAttributes, @Nullable MediaType contentType, ServerWebExchange exchange)
从类复制的说明:AbstractView
Subclasses must implement this method to actually render the view.- 指定者:
renderInternal
在类中AbstractView
- 参数:
renderAttributes
- combined output Map (nevernull
), with dynamic values taking precedence over static attributescontentType
- the content type selected to render with, which should match one of the supported media typesexchange
- current exchange- 返回:
- a
Mono
that represents when and if rendering succeeds
getTemplateModel
protected freemarker.template.SimpleHash getTemplateModel(Map<String,Object> model, ServerWebExchange exchange)
Build a FreeMarker template model for the given model map.The default implementation builds a
SimpleHash
.- 参数:
model
- the model to use for renderingexchange
- current exchange- 返回:
- the FreeMarker template model, as a
SimpleHash
or subclass thereof
getObjectWrapper
protected freemarker.template.ObjectWrapper getObjectWrapper()
Get the configured FreeMarkerObjectWrapper
, or the default wrapper if none specified.- 另请参阅:
Configurable.getObjectWrapper()
getTemplate
protected freemarker.template.Template getTemplate(Locale locale) throws IOException
Get the FreeMarker template for the given locale, to be rendered by this view.By default, the template specified by the "url" bean property will be retrieved.
- 参数:
locale
- the current locale- 返回:
- the FreeMarker template to render
- 抛出:
IOException