public class RedirectView extends AbstractUrlBasedView
By default HttpStatus.SEE_OTHER is used but alternate status
codes may be via constructor or setters arguments.
logger, REQUEST_DATA_VALUE_PROCESSOR_BEAN_NAME| Constructor and Description |
|---|
RedirectView()
Constructor for use as a bean.
|
RedirectView(String redirectUrl)
Create a new
RedirectView with the given redirect URL. |
RedirectView(String redirectUrl,
org.springframework.http.HttpStatus statusCode)
Create a new
RedirectView with the given URL and an alternate
redirect status code such as HttpStatus.TEMPORARY_REDIRECT or
HttpStatus.PERMANENT_REDIRECT. |
| Modifier and Type | Method and Description |
|---|---|
void |
afterPropertiesSet() |
protected StringBuilder |
appendCurrentRequestQuery(String targetUrl,
org.springframework.http.server.reactive.ServerHttpRequest request)
Append the query of the current request to the target redirect URL.
|
boolean |
checkResourceExists(Locale locale)
Check whether the resource for the configured URL actually exists.
|
protected String |
createTargetUrl(Map<String,Object> model,
org.springframework.web.server.ServerWebExchange exchange)
Create the target URL and, if necessary, pre-pend the contextPath, expand
URI template variables, append the current request query, and apply the
configured
RequestDataValueProcessor. |
protected StringBuilder |
expandTargetUrlTemplate(String targetUrl,
Map<String,Object> model,
Map<String,String> uriVariables)
Expand URI template variables in the target URL with either model
attribute values or as a fallback with URI variable values from the
current request.
|
String[] |
getHosts()
Return the configured application hosts.
|
org.springframework.http.HttpStatus |
getStatusCode()
Get the redirect status code to use.
|
boolean |
isContextRelative()
Whether to interpret URLs as relative to the current context path.
|
boolean |
isPropagateQuery()
Whether the query string of the current URL is appended to the redirect URL.
|
boolean |
isRedirectView()
Whether this View does rendering by performing a redirect.
|
protected boolean |
isRemoteHost(String targetUrl)
Whether the given targetUrl has a host that is a "foreign" system in which
case
HttpServletResponse.encodeRedirectURL(java.lang.String) will not be applied. |
protected reactor.core.publisher.Mono<Void> |
renderInternal(Map<String,Object> model,
org.springframework.http.MediaType contentType,
org.springframework.web.server.ServerWebExchange exchange)
Convert model to request parameters and redirect to the given URL.
|
protected reactor.core.publisher.Mono<Void> |
sendRedirect(String targetUrl,
org.springframework.web.server.ServerWebExchange exchange)
Send a redirect back to the HTTP client.
|
void |
setContextRelative(boolean contextRelative)
Whether to interpret a given redirect URLs that starts with a slash ("/")
as relative to the current context path (
true, the default) or to
the web server root (false). |
void |
setHosts(String... hosts)
Configure one or more hosts associated with the application.
|
void |
setPropagateQuery(boolean propagateQuery)
Whether to append the query string of the current URL to the redirect URL
(
true) or not (false, the default). |
void |
setStatusCode(org.springframework.http.HttpStatus statusCode)
Set an alternate redirect status code such as
HttpStatus.TEMPORARY_REDIRECT or
HttpStatus.PERMANENT_REDIRECT. |
getUrl, setUrl, toStringcreateRequestContext, formatViewName, getApplicationContext, getBeanName, getDefaultCharset, getModelAttributes, getRequestContextAttribute, getRequestDataValueProcessor, getSupportedMediaTypes, obtainApplicationContext, render, resolveAsyncAttributes, setApplicationContext, setBeanName, setDefaultCharset, setRequestContextAttribute, setSupportedMediaTypespublic RedirectView()
public RedirectView(String redirectUrl)
RedirectView with the given redirect URL.
Status code HttpStatus.SEE_OTHER is used by default.public RedirectView(String redirectUrl, org.springframework.http.HttpStatus statusCode)
RedirectView with the given URL and an alternate
redirect status code such as HttpStatus.TEMPORARY_REDIRECT or
HttpStatus.PERMANENT_REDIRECT.public void setContextRelative(boolean contextRelative)
true, the default) or to
the web server root (false).public boolean isContextRelative()
public void setStatusCode(org.springframework.http.HttpStatus statusCode)
HttpStatus.TEMPORARY_REDIRECT or
HttpStatus.PERMANENT_REDIRECT.public org.springframework.http.HttpStatus getStatusCode()
public void setPropagateQuery(boolean propagateQuery)
true) or not (false, the default).public boolean isPropagateQuery()
public void setHosts(@Nullable
String... hosts)
In effect this provides a way turn off encoding for URLs that have a host and that host is not listed as a known host.
If not set (the default) all redirect URLs are encoded.
hosts - one or more application hosts@Nullable public String[] getHosts()
public void afterPropertiesSet()
throws Exception
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBeanafterPropertiesSet in class AbstractUrlBasedViewExceptionpublic boolean isRedirectView()
Viewpublic boolean checkResourceExists(Locale locale) throws Exception
AbstractUrlBasedViewcheckResourceExists in class AbstractUrlBasedViewlocale - the desired Locale that we're looking forfalse if the resource exists
false if we know that it does not existException - if the resource exists but is invalid (e.g. could not be parsed)protected reactor.core.publisher.Mono<Void> renderInternal(Map<String,Object> model, @Nullable org.springframework.http.MediaType contentType, org.springframework.web.server.ServerWebExchange exchange)
renderInternal in class AbstractViewmodel - combined output Map (never null),
with dynamic values taking precedence over static attributescontentType - the content type selected to render with which should
match one of the supported media types.exchange - current exchange @return Mono to represent when
and if rendering succeedsprotected final String createTargetUrl(Map<String,Object> model, org.springframework.web.server.ServerWebExchange exchange)
RequestDataValueProcessor.protected StringBuilder expandTargetUrlTemplate(String targetUrl, Map<String,Object> model, Map<String,String> uriVariables)
protected StringBuilder appendCurrentRequestQuery(String targetUrl, org.springframework.http.server.reactive.ServerHttpRequest request)
protected reactor.core.publisher.Mono<Void> sendRedirect(String targetUrl, org.springframework.web.server.ServerWebExchange exchange)
targetUrl - the target URL to redirect toexchange - current exchangeprotected boolean isRemoteHost(String targetUrl)
HttpServletResponse.encodeRedirectURL(java.lang.String) will not be applied.
This method returns true if the setHosts(String[])
property is configured and the target URL has a host that does not match.targetUrl - the target redirect URLtrue the target URL has a remote host, false if it
the URL does not have a host or the "host" property is not configured.