public class MvcUriComponentsBuilder
extends org.springframework.web.util.UriComponentsBuilder
| Modifier and Type | Class and Description |
|---|---|
static interface |
MvcUriComponentsBuilder.MethodInvocationInfo |
| Modifier and Type | Field and Description |
|---|---|
static String |
MVC_URI_COMPONENTS_CONTRIBUTOR_BEAN_NAME
Well-known name for the
CompositeUriComponentsContributor object in the bean factory. |
| Constructor and Description |
|---|
MvcUriComponentsBuilder() |
| Modifier and Type | Method and Description |
|---|---|
static <T> T |
controller(Class<T> controllerType)
Return a "mock" controller instance.
|
static org.springframework.web.util.UriComponentsBuilder |
fromController(Class<?> controllerType)
Create a
UriComponentsBuilder from the mapping of a controller class
and current request information including Servlet mapping. |
static org.springframework.web.util.UriComponentsBuilder |
fromMethod(Method method,
Object... argumentValues)
Create a
UriComponentsBuilder from the mapping of a controller method
and an array of method argument values. |
static org.springframework.web.util.UriComponentsBuilder |
fromMethodCall(Object invocationInfo)
Create a
UriComponentsBuilder by invoking a "mock" controller method. |
static org.springframework.web.util.UriComponentsBuilder |
fromMethodName(Class<?> controllerType,
String methodName,
Object... argumentValues)
Create a
UriComponentsBuilder from the mapping of a controller method
and an array of method argument values. |
protected static org.springframework.web.method.support.CompositeUriComponentsContributor |
getConfiguredUriComponentsContributor() |
static <T> T |
on(Class<T> controllerType)
Return a "mock" controller instance.
|
build, build, buildAndExpand, buildAndExpand, fragment, fromHttpUrl, fromPath, fromUri, fromUriString, host, newInstance, path, pathSegment, port, query, queryParam, queryParams, replacePath, replaceQuery, replaceQueryParam, scheme, schemeSpecificPart, uri, uriComponents, userInfopublic static final String MVC_URI_COMPONENTS_CONTRIBUTOR_BEAN_NAME
CompositeUriComponentsContributor object in the bean factory.public static org.springframework.web.util.UriComponentsBuilder fromController(Class<?> controllerType)
UriComponentsBuilder 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.controllerType - the controller to build a URI fornullpublic static org.springframework.web.util.UriComponentsBuilder fromMethodName(Class<?> controllerType, String methodName, Object... argumentValues)
UriComponentsBuilder from the mapping of a controller method
and an array of method argument values. This method delegates to
fromMethod(java.lang.reflect.Method, Object...).controllerType - the controllermethodName - the method nameargumentValues - the argument valuesnullIllegalStateException - if there is no matching or more than
one matching method.public static org.springframework.web.util.UriComponentsBuilder fromMethodCall(Object invocationInfo)
UriComponentsBuilder by invoking a "mock" controller method.
The controller method and the supplied argument values are then used to
delegate to fromMethod(java.lang.reflect.Method, Object...).
For example given this controller:
@RequestMapping("/people/{id}/addresses")
class AddressController {
@RequestMapping("/{country}")
public HttpEntity 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(CustomerController.class).showAddresses("US")).buildAndExpand(1);
// Longer form useful for repeated invocation (and void controller methods)
CustomerController controller = MvcUriComponentsBuilder.on(CustomController.class);
controller.addAddress(null);
builder = MvcUriComponentsBuilder.fromMethodCall(controller);
controller.getAddressesForCountry("US")
builder = MvcUriComponentsBuilder.fromMethodCall(controller);
invocationInfo - either the value returned from a "mock" controller
invocation or the "mock" controller itself after an invocationpublic static org.springframework.web.util.UriComponentsBuilder fromMethod(Method method, Object... argumentValues)
UriComponentsBuilder 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 of
UriComponentsContributor)
while remaining argument values are ignored and can be null.method - the controller methodargumentValues - argument values for the controller methodnullprotected static org.springframework.web.method.support.CompositeUriComponentsContributor getConfiguredUriComponentsContributor()
public static <T> T on(Class<T> controllerType)
@RequestMapping method
on the controller is invoked, the supplied argument values are remembered
and the result can then be used to create a UriComponentsBuilder
via fromMethodCall(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();
controllerType - the target controllerpublic static <T> T controller(Class<T> controllerType)
@RequestMapping method
on the controller is invoked, the supplied argument values are remembered
and the result can then be used to create UriComponentsBuilder via
fromMethodCall(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);
controllerType - the target controller