类 MvcUriComponentsBuilder
- java.lang.Object
- org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder
public class MvcUriComponentsBuilder extends Object
Creates instances ofUriComponentsBuilder
by pointing to@RequestMapping
methods on Spring MVC controllers.There are several groups of methods:
- Static
fromXxx(...)
methods to prepare links using information from the current request as determined by a call toServletUriComponentsBuilder.fromCurrentServletMapping()
. - Static
fromXxx(UriComponentsBuilder,...)
methods can be given a baseUrl when operating outside the context of a request. - Instance-based
withXxx(...)
methods where an instance of MvcUriComponentsBuilder is created with a baseUrl viarelativeTo(org.springframework.web.util.UriComponentsBuilder)
.
Note: This class uses values from "Forwarded" (RFC 7239), "X-Forwarded-Host", "X-Forwarded-Port", and "X-Forwarded-Proto" headers, if present, in order to reflect the client-originated protocol and address. Consider using the
ForwardedHeaderFilter
in order to choose from a central place whether to extract and use, or to discard such headers. See the Spring Framework reference for more on this filter.- 从以下版本开始:
- 4.0
- 作者:
- Oliver Gierke, Rossen Stoyanchev, Sam Brannen
- Static
嵌套类概要
嵌套类 修饰符和类型 类 说明 static class
MvcUriComponentsBuilder.MethodArgumentBuilder
Builder class to create URLs for method arguments.static interface
MvcUriComponentsBuilder.MethodInvocationInfo
Method invocation information.
字段概要
字段 修饰符和类型 字段 说明 static String
MVC_URI_COMPONENTS_CONTRIBUTOR_BEAN_NAME
Well-known name for theCompositeUriComponentsContributor
object in the bean factory.
构造器概要
构造器 限定符 构造器 说明 protected
MvcUriComponentsBuilder(UriComponentsBuilder baseUrl)
Default constructor.
方法概要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 说明 static <T> T
controller(Class<T> controllerType)
Return a "mock" controller instance.static UriComponentsBuilder
fromController(Class<?> controllerType)
Create aUriComponentsBuilder
from the mapping of a controller class and current request information including Servlet mapping.static UriComponentsBuilder
fromController(UriComponentsBuilder builder, Class<?> controllerType)
An alternative tofromController(Class)
that accepts aUriComponentsBuilder
representing the base URL.static MvcUriComponentsBuilder.MethodArgumentBuilder
fromMappingName(String mappingName)
Create a URL from the name of a Spring MVC controller method's request mapping.static MvcUriComponentsBuilder.MethodArgumentBuilder
fromMappingName(UriComponentsBuilder builder, String name)
An alternative tofromMappingName(String)
that accepts aUriComponentsBuilder
representing the base URL.static UriComponentsBuilder
fromMethod(Class<?> controllerType, Method method, Object... args)
Create aUriComponentsBuilder
from the mapping of a controller method and an array of method argument values.static UriComponentsBuilder
fromMethod(UriComponentsBuilder baseUrl, Class<?> controllerType, Method method, Object... args)
An alternative tofromMethod(Class, Method, Object...)
that accepts aUriComponentsBuilder
representing the base URL.static UriComponentsBuilder
fromMethodCall(Object info)
Create aUriComponentsBuilder
by invoking a "mock" controller method.static UriComponentsBuilder
fromMethodCall(UriComponentsBuilder builder, Object info)
An alternative tofromMethodCall(Object)
that accepts aUriComponentsBuilder
representing the base URL.static UriComponentsBuilder
fromMethodName(Class<?> controllerType, String methodName, Object... args)
Create aUriComponentsBuilder
from the mapping of a controller method and an array of method argument values.static UriComponentsBuilder
fromMethodName(UriComponentsBuilder builder, Class<?> controllerType, String methodName, Object... args)
An alternative tofromMethodName(Class, String, Object...)
that accepts aUriComponentsBuilder
representing the base URL.static <T> T
on(Class<T> controllerType)
Return a "mock" controller instance.static MvcUriComponentsBuilder
relativeTo(UriComponentsBuilder baseUrl)
Create an instance of this class with a base URL.UriComponentsBuilder
withController(Class<?> controllerType)
An alternative tofromController(Class)
for use with an instance of this class created via a call torelativeTo(org.springframework.web.util.UriComponentsBuilder)
.MvcUriComponentsBuilder.MethodArgumentBuilder
withMappingName(String mappingName)
An alternative tofromMappingName(String)
for use with an instance of this class created viarelativeTo(org.springframework.web.util.UriComponentsBuilder)
.UriComponentsBuilder
withMethod(Class<?> controllerType, Method method, Object... args)
An alternative tofromMethod(Class, Method, Object...)
for use with an instance of this class created viarelativeTo(org.springframework.web.util.UriComponentsBuilder)
.UriComponentsBuilder
withMethodCall(Object invocationInfo)
An alternative tofromMethodCall(Object)
for use with an instance of this class created viarelativeTo(org.springframework.web.util.UriComponentsBuilder)
.UriComponentsBuilder
withMethodName(Class<?> controllerType, String methodName, Object... args)
An alternative tofromMethodName(Class, String, Object...)
} for use with an instance of this class created viarelativeTo(org.springframework.web.util.UriComponentsBuilder)
.
字段详细资料
MVC_URI_COMPONENTS_CONTRIBUTOR_BEAN_NAME
public static final String MVC_URI_COMPONENTS_CONTRIBUTOR_BEAN_NAME
Well-known name for theCompositeUriComponentsContributor
object in the bean factory.- 另请参阅:
- 常量字段值
构造器详细资料
MvcUriComponentsBuilder
protected MvcUriComponentsBuilder(UriComponentsBuilder baseUrl)
Default constructor. Protected to prevent direct instantiation.
方法详细资料
relativeTo
public static MvcUriComponentsBuilder relativeTo(UriComponentsBuilder baseUrl)
Create an instance of this class with a base URL. After that calls to one of the instance basedwithXxx(...
} methods will create URLs relative to the given base URL.
fromController
public static UriComponentsBuilder fromController(Class<?> controllerType)
Create aUriComponentsBuilder
from the mapping of a controller class and current request information including Servlet mapping. If the controller contains multiple mappings, only the first one is used.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
controllerType
- the controller to build a URI for- 返回:
- a UriComponentsBuilder instance (never
null
)
fromController
public static UriComponentsBuilder fromController(@Nullable UriComponentsBuilder builder, Class<?> controllerType)
An alternative tofromController(Class)
that accepts aUriComponentsBuilder
representing the base URL. This is useful when using MvcUriComponentsBuilder outside the context of processing a request or to apply a custom baseUrl not matching the current request.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
builder
- the builder for the base URL; the builder will be cloned and therefore not modified and may be re-used for further calls.controllerType
- the controller to build a URI for- 返回:
- a UriComponentsBuilder instance (never
null
)
fromMethodName
public static UriComponentsBuilder fromMethodName(Class<?> controllerType, String methodName, Object... args)
Create aUriComponentsBuilder
from the mapping of a controller method and an array of method argument values. This method delegates tofromMethod(Class, Method, Object...)
.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
controllerType
- the controllermethodName
- the method nameargs
- the argument values- 返回:
- a UriComponentsBuilder instance, never
null
- 抛出:
IllegalArgumentException
- if there is no matching or if there is more than one matching method
fromMethodName
public static UriComponentsBuilder fromMethodName(UriComponentsBuilder builder, Class<?> controllerType, String methodName, Object... args)
An alternative tofromMethodName(Class, String, Object...)
that accepts aUriComponentsBuilder
representing the base URL. This is useful when using MvcUriComponentsBuilder outside the context of processing a request or to apply a custom baseUrl not matching the current request.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
builder
- the builder for the base URL; the builder will be cloned and therefore not modified and may be re-used for further calls.controllerType
- the controllermethodName
- the method nameargs
- the argument values- 返回:
- a UriComponentsBuilder instance, never
null
- 抛出:
IllegalArgumentException
- if there is no matching or if there is more than one matching method
fromMethod
public static UriComponentsBuilder fromMethod(Class<?> controllerType, Method method, Object... args)
Create aUriComponentsBuilder
from the mapping of a controller method and an array of method argument values. The array of values must match the signature of the controller method. Values for@RequestParam
and@PathVariable
are used for building the URI (via implementations ofUriComponentsContributor
) while remaining argument values are ignored and can benull
.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
controllerType
- the controller typemethod
- the controller methodargs
- argument values for the controller method- 返回:
- a UriComponentsBuilder instance, never
null
- 从以下版本开始:
- 4.2
fromMethod
public static UriComponentsBuilder fromMethod(UriComponentsBuilder baseUrl, @Nullable Class<?> controllerType, Method method, Object... args)
An alternative tofromMethod(Class, Method, Object...)
that accepts aUriComponentsBuilder
representing the base URL. This is useful when using MvcUriComponentsBuilder outside the context of processing a request or to apply a custom baseUrl not matching the current request.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
baseUrl
- the builder for the base URL; the builder will be cloned and therefore not modified and may be re-used for further calls.controllerType
- the controller typemethod
- the controller methodargs
- argument values for the controller method- 返回:
- a UriComponentsBuilder instance (never
null
) - 从以下版本开始:
- 4.2
fromMethodCall
public static UriComponentsBuilder fromMethodCall(Object info)
Create aUriComponentsBuilder
by invoking a "mock" controller method. The controller method and the supplied argument values are then used to delegate tofromMethod(Class, Method, Object...)
.For example, given this controller:
@RequestMapping("/people/{id}/addresses") class AddressController { @RequestMapping("/{country}") public HttpEntity<Void> getAddressesForCountry(@PathVariable String country) { ... } @RequestMapping(value="/", method=RequestMethod.POST) public void addAddress(Address address) { ... } }
A UriComponentsBuilder can be created:// Inline style with static import of "MvcUriComponentsBuilder.on" MvcUriComponentsBuilder.fromMethodCall( on(AddressController.class).getAddressesForCountry("US")).buildAndExpand(1); // Longer form useful for repeated invocation (and void controller methods) AddressController controller = MvcUriComponentsBuilder.on(AddressController.class); controller.addAddress(null); builder = MvcUriComponentsBuilder.fromMethodCall(controller); controller.getAddressesForCountry("US") builder = MvcUriComponentsBuilder.fromMethodCall(controller);
Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
info
- either the value returned from a "mock" controller invocation or the "mock" controller itself after an invocation- 返回:
- a UriComponents instance
- 另请参阅:
on(Class)
,controller(Class)
fromMethodCall
public static UriComponentsBuilder fromMethodCall(UriComponentsBuilder builder, Object info)
An alternative tofromMethodCall(Object)
that accepts aUriComponentsBuilder
representing the base URL. This is useful when using MvcUriComponentsBuilder outside the context of processing a request or to apply a custom baseUrl not matching the current request.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
builder
- the builder for the base URL; the builder will be cloned and therefore not modified and may be re-used for further calls.info
- either the value returned from a "mock" controller invocation or the "mock" controller itself after an invocation- 返回:
- a UriComponents instance
on
public static <T> T on(Class<T> controllerType)
Return a "mock" controller instance. When an@RequestMapping
method on the controller is invoked, the supplied argument values are remembered and the result can then be used to create aUriComponentsBuilder
viafromMethodCall(Object)
.Note that this is a shorthand version of
controller(Class)
intended for inline use (with a static import), for example:MvcUriComponentsBuilder.fromMethodCall(on(FooController.class).getFoo(1)).build();
Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
controllerType
- the target controller
controller
public static <T> T controller(Class<T> controllerType)
Return a "mock" controller instance. When an@RequestMapping
method on the controller is invoked, the supplied argument values are remembered and the result can then be used to createUriComponentsBuilder
viafromMethodCall(Object)
.This is a longer version of
on(Class)
. It is needed with controller methods returning void as well for repeated invocations.FooController fooController = controller(FooController.class); fooController.saveFoo(1, null); builder = MvcUriComponentsBuilder.fromMethodCall(fooController); fooController.saveFoo(2, null); builder = MvcUriComponentsBuilder.fromMethodCall(fooController);
Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
controllerType
- the target controller
fromMappingName
public static MvcUriComponentsBuilder.MethodArgumentBuilder fromMappingName(String mappingName)
Create a URL from the name of a Spring MVC controller method's request mapping.The configured
HandlerMethodMappingNamingStrategy
determines the names of controller method request mappings at startup. By default all mappings are assigned a name based on the capital letters of the class name, followed by "#" as separator, and then the method name. For example "PC#getPerson" for a class named PersonController with method getPerson. In case the naming convention does not produce unique results, an explicit name may be assigned through the name attribute of the@RequestMapping
annotation.This is aimed primarily for use in view rendering technologies and EL expressions. The Spring URL tag library registers this method as a function called "mvcUrl".
For example, given this controller:
@RequestMapping("/people") class PersonController { @RequestMapping("/{id}") public HttpEntity<Void> getPerson(@PathVariable String id) { ... } }
A JSP can prepare a URL to the controller method as follows:<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %> <a href="${s:mvcUrl('PC#getPerson').arg(0,"123").build()}">Get Person</a>
Note that it's not necessary to specify all arguments. Only the ones required to prepare the URL, mainly
@RequestParam
and@PathVariable
).Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
mappingName
- the mapping name- 返回:
- a builder to prepare the URI String
- 抛出:
IllegalArgumentException
- if the mapping name is not found or if there is no unique match- 从以下版本开始:
- 4.1
fromMappingName
public static MvcUriComponentsBuilder.MethodArgumentBuilder fromMappingName(@Nullable UriComponentsBuilder builder, String name)
An alternative tofromMappingName(String)
that accepts aUriComponentsBuilder
representing the base URL. This is useful when using MvcUriComponentsBuilder outside the context of processing a request or to apply a custom baseUrl not matching the current request.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 参数:
builder
- the builder for the base URL; the builder will be cloned and therefore not modified and may be re-used for further calls.name
- the mapping name- 返回:
- a builder to prepare the URI String
- 抛出:
IllegalArgumentException
- if the mapping name is not found or if there is no unique match- 从以下版本开始:
- 4.2
withController
public UriComponentsBuilder withController(Class<?> controllerType)
An alternative tofromController(Class)
for use with an instance of this class created via a call torelativeTo(org.springframework.web.util.UriComponentsBuilder)
.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 从以下版本开始:
- 4.2
withMethodName
public UriComponentsBuilder withMethodName(Class<?> controllerType, String methodName, Object... args)
An alternative tofromMethodName(Class, String, Object...)
} for use with an instance of this class created viarelativeTo(org.springframework.web.util.UriComponentsBuilder)
.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 从以下版本开始:
- 4.2
withMethodCall
public UriComponentsBuilder withMethodCall(Object invocationInfo)
An alternative tofromMethodCall(Object)
for use with an instance of this class created viarelativeTo(org.springframework.web.util.UriComponentsBuilder)
.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 从以下版本开始:
- 4.2
withMappingName
public MvcUriComponentsBuilder.MethodArgumentBuilder withMappingName(String mappingName)
An alternative tofromMappingName(String)
for use with an instance of this class created viarelativeTo(org.springframework.web.util.UriComponentsBuilder)
.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 从以下版本开始:
- 4.2
withMethod
public UriComponentsBuilder withMethod(Class<?> controllerType, Method method, Object... args)
An alternative tofromMethod(Class, Method, Object...)
for use with an instance of this class created viarelativeTo(org.springframework.web.util.UriComponentsBuilder)
.Note: This method extracts values from "Forwarded" and "X-Forwarded-*" headers if found. See class-level docs.
- 从以下版本开始:
- 4.2