Class ScriptTemplateView
- java.lang.Object
- org.springframework.web.reactive.result.view.AbstractView
- org.springframework.web.reactive.result.view.AbstractUrlBasedView
- org.springframework.web.reactive.result.view.script.ScriptTemplateView
- All Implemented Interfaces:
Aware
,BeanNameAware
,InitializingBean
,ApplicationContextAware
,View
public class ScriptTemplateView extends AbstractUrlBasedView
AnAbstractUrlBasedView
subclass designed to run any template library based on a JSR-223 script engine.If not set, each property is auto-detected by looking up a single
ScriptTemplateConfig
bean in the web application context and using it to obtain the configured properties.The Nashorn JavaScript engine requires Java 8+ and may require setting the
sharedEngine
property tofalse
in order to run properly. SeeScriptTemplateConfigurer.setSharedEngine(Boolean)
for more details.- Since:
- 5.0
- Author:
- Sebastien Deleuze, Juergen Hoeller
- See Also:
ScriptTemplateConfigurer
,ScriptTemplateViewResolver
Field Summary
Fields inherited from class org.springframework.web.reactive.result.view.AbstractView
logger, REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME
Fields inherited from interface org.springframework.web.reactive.result.view.View
BINDING_CONTEXT_ATTRIBUTE
Constructor Summary
Constructors Constructor Description ScriptTemplateView()
Constructor for use as a bean.ScriptTemplateView(String url)
Create a new ScriptTemplateView with the given URL.
Method Summary
Methods inherited from class org.springframework.web.reactive.result.view.AbstractUrlBasedView
afterPropertiesSet, getUrl, setUrl, toString
Methods inherited from class org.springframework.web.reactive.result.view.AbstractView
createRequestContext, formatViewName, getApplicationContext, getBeanName, getDefaultCharset, getModelAttributes, getRequestContextAttribute, getRequestDataValueProcessor, getSupportedMediaTypes, obtainApplicationContext, render, resolveAsyncAttributes, resolveAsyncAttributes, setBeanName, setDefaultCharset, setRequestContextAttribute, setSupportedMediaTypes
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.web.reactive.result.view.View
isRedirectView
Constructor Detail
ScriptTemplateView
public ScriptTemplateView()
Constructor for use as a bean.
ScriptTemplateView
public ScriptTemplateView(String url)
Create a new ScriptTemplateView with the given URL.
Method Detail
setEngine
public void setEngine(ScriptEngine engine)
SeeScriptTemplateConfigurer.setEngine(ScriptEngine)
documentation.
setEngineSupplier
public void setEngineSupplier(Supplier<ScriptEngine> engineSupplier)
SeeScriptTemplateConfigurer.setEngineSupplier(Supplier)
documentation.- Since:
- 5.2
setEngineName
public void setEngineName(String engineName)
SeeScriptTemplateConfigurer.setEngineName(String)
documentation.
setSharedEngine
public void setSharedEngine(Boolean sharedEngine)
SeeScriptTemplateConfigurer.setSharedEngine(Boolean)
documentation.
setScripts
public void setScripts(String... scripts)
SeeScriptTemplateConfigurer.setScripts(String...)
documentation.
setRenderObject
public void setRenderObject(String renderObject)
SeeScriptTemplateConfigurer.setRenderObject(String)
documentation.
setRenderFunction
public void setRenderFunction(String functionName)
SeeScriptTemplateConfigurer.setRenderFunction(String)
documentation.
setResourceLoaderPath
public void setResourceLoaderPath(String resourceLoaderPath)
SeeScriptTemplateConfigurer.setResourceLoaderPath(String)
documentation.
setApplicationContext
public void setApplicationContext(@Nullable ApplicationContext context)
Description copied from interface:ApplicationContextAware
Set the ApplicationContext that this object runs in. Normally this call will be used to initialize the object.Invoked after population of normal bean properties but before an init callback such as
InitializingBean.afterPropertiesSet()
or a custom init-method. Invoked afterResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader)
,ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher)
andMessageSourceAware
, if applicable.- Specified by:
setApplicationContext
in interfaceApplicationContextAware
- Overrides:
setApplicationContext
in classAbstractView
- Parameters:
context
- the ApplicationContext object to be used by this object- See Also:
BeanInitializationException
getEngine
protected ScriptEngine getEngine()
createEngineFromName
protected ScriptEngine createEngineFromName(String engineName)
loadScripts
protected void loadScripts(ScriptEngine engine)
getResource
@Nullable protected Resource getResource(String location)
autodetectViewConfig
protected ScriptTemplateConfig autodetectViewConfig() throws BeansException
- Throws:
BeansException
checkResourceExists
public boolean checkResourceExists(Locale locale) throws Exception
Description copied from class:AbstractUrlBasedView
Check whether the resource for the configured URL actually exists.- Specified by:
checkResourceExists
in classAbstractUrlBasedView
- Parameters:
locale
- the desired Locale that we're looking for- Returns:
false
if the resource existsfalse
if we know that it does not exist- Throws:
Exception
- if the resource exists but is invalid (e.g. could not be parsed)
renderInternal
protected reactor.core.publisher.Mono<Void> renderInternal(Map<String,Object> model, @Nullable MediaType contentType, ServerWebExchange exchange)
Description copied from class:AbstractView
Subclasses must implement this method to actually render the view.- Specified by:
renderInternal
in classAbstractView
- Parameters:
model
- 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- Returns:
- a
Mono
that represents when and if rendering succeeds
getTemplate
protected String getTemplate(String path) throws IOException
- Throws:
IOException