2012-07-25 696 views
7

resorte móvil documentation sugiere la adición de la siguiente configuración:Spring Mobile: cómo agregar DeviceWebArgumentResolver programáticamente?

<mvc:annotation-driven> 
    <mvc:argument-resolvers> 
     <beans:bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" /> 
    </mvc:argument-resolvers> 
</mvc:annotation-driven> 

para pasar el objeto de dispositivo actual como un argumento a @Controller métodos.

Sin embargo, se puede utilizar:

@EnableWebMvc 
@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 

} 

y bypass <mvc:annotation-driven> configuración.

Entonces, ¿cómo agregar un DeviceWebArgumentResolver programáticamente?

Solución (Luciano):

@EnableWebMvc 
@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addArgumentResolvers(
     List<HandlerMethodArgumentResolver> argumentResolvers) { 

     // Adding Spring mobile argument resolvers 
     argumentResolvers.add(
      new ServletWebArgumentResolverAdapter(
       new DeviceWebArgumentResolver())); 

     argumentResolvers.add(
      new ServletWebArgumentResolverAdapter(
       new SitePreferenceWebArgumentResolver())); 

    } 

    // ... 

} 

Respuesta

5

WebMvcConfigurerAdapter contiene un método llamado addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)

Ese es el método que necesita para implementar, pero primero es necesario convertir un WebArgumentResolver (en este caso, DeviceWebArgumentResolver) en un HandlerMethodArgumentResolver. Para eso, existe una clase llamada ServletWebArgumentResolverAdapter.

+2

A partir de la versión 1.1.0.M1, Spring Mobile ahora incluye un 'DeviceHandlerMethodArgumentResolver' para admitir la configuración basada en Java. –

Cuestiones relacionadas