Example usage for org.springframework.web.servlet.mvc.method.annotation RequestMappingHandlerAdapter setArgumentResolvers

List of usage examples for org.springframework.web.servlet.mvc.method.annotation RequestMappingHandlerAdapter setArgumentResolvers

Introduction

In this page you can find the example usage for org.springframework.web.servlet.mvc.method.annotation RequestMappingHandlerAdapter setArgumentResolvers.

Prototype

public void setArgumentResolvers(@Nullable List<HandlerMethodArgumentResolver> argumentResolvers) 

Source Link

Document

Configure the complete list of supported argument types thus overriding the resolvers that would otherwise be configured by default.

Usage

From source file:io.neba.core.mvc.MvcContext.java

/**
 * Registers the custom argument resolvers if a {@link RequestMappingHandlerAdapter}
 * is present in the factory.//from w  ww.ja  v a  2  s . co m
 */
private void registerCustomArgumentResolvers() {
    RequestMappingHandlerAdapter requestMappingHandlerAdapter = this.factory
            .getBean(RequestMappingHandlerAdapter.class);

    if (requestMappingHandlerAdapter != null) {
        HandlerMethodArgumentResolverComposite argumentResolvers = requestMappingHandlerAdapter
                .getArgumentResolvers();

        if (argumentResolvers == null) {
            throw new IllegalStateException("No argument resolvers found in " + requestMappingHandlerAdapter
                    + ". It appears the handler was not initialized by the application context.");
        }

        // Add Sling-specific argument resolvers first
        List<HandlerMethodArgumentResolver> resolvers = new LinkedList<HandlerMethodArgumentResolver>();
        resolvers.add(new RequestPathInfoArgumentResolver());
        resolvers.add(new ResourceResolverArgumentResolver());
        resolvers.add(new ResourceParamArgumentResolver());

        // Subsequently add all existing argument resolvers (they are order-sensitive, ending with a catch-all resolver,
        // thus the custom resolvers have to go first)
        resolvers.addAll(argumentResolvers.getResolvers());
        requestMappingHandlerAdapter.setArgumentResolvers(resolvers);
    }
}