2012-07-25 5 views
7

Spring cellulare documentation suggeriscono aggiungendo la seguente configurazione:Spring Mobile: come aggiungere DeviceWebArgumentResolver in modo programmatico?

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

passare l'oggetto corrente Dispositivo come argomento @Controller metodi.

Eppure, si può usare:

@EnableWebMvc 
@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 

} 

e bypass <mvc:annotation-driven> configurazione.

Quindi, come aggiungere uno DeviceWebArgumentResolver programmaticamente?

Solution (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())); 

    } 

    // ... 

} 

risposta

5

WebMvcConfigurerAdapter contiene un metodo chiamato addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers)

Questo è il metodo è necessario implementare, ma prima è necessario convertire un WebArgumentResolver (in questo caso, DeviceWebArgumentResolver) in un HandlerMethodArgumentResolver. Per questo esiste una classe denominata ServletWebArgumentResolverAdapter.

+2

A partire dalla versione 1.1.0.M1, Spring Mobile ora include un 'DeviceHandlerMethodArgumentResolver' per supportare la configurazione basata su Java. –

Problemi correlati