2015-05-22 14 views
6

Ho uno Spring MVC classe di configurazione in questo modo:come aggiungere RequestMappingHandlerMapping e ResourceHandlers a una classe di configurazione SpringMVC

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter{ 
@Bean 
public InternalResourceViewResolver configureInternalResourceViewResolver() { 
    InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/views/"); 
    resolver.setSuffix(".jsp"); 
    return resolver; 
} 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/resources/**").addResourceLocations(
      "/resources/"); 
} 


} 

Ho un problema con Maping URL con una barra finale, simile a this. quindi voglio aggiungere la classe RequestMappingHandlerMapping, ma in base all'istruzione ottengo there ho bisogno di estendereWebMvcConfigurationSupport classe e attuare il metodo requestMappingHandlerMapping(), ma sfortunatamente ho già esteso la classe WebMvcConfigurationSupport per il mapping delle risorse. C'è un modo per aggiungere il gestore di mapping più necessario alla mia classe?

NOTA: io sto usando la versione Primavera 3.1.1.RELEASE

risposta

4

Non ho ricevuto dalla tua domanda il motivo per cui non è possibile utilizzare WebMvcConfigurationSupport. Se da quello che hai citato "... sfortunatamente ho già esteso la classe WebMvcConfigurationSupport per il mapping delle risorse ..." significa che hai già esteso lo WebMvcConfigurerAdapter, devi sapere che lo WebMvcConfigurationSupport espone esattamente lo stesso metodo.

In ogni modo, in seguito dovrebbe essere una configurazione Java che lavora per Spring MVC 3.1 versione

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurationSupport { 

    @Override 
    @Bean 
    public RequestMappingHandlerMapping requestMappingHandlerMapping() { 
     RequestMappingHandlerMapping hm = super.requestMappingHandlerMapping(); 
     hm.setUseSuffixPatternMatch(false); 
     return hm; 
    } 

    @Bean 
    public InternalResourceViewResolver configureInternalResourceViewResolver() { 
     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix("/WEB-INF/views/"); 
     resolver.setSuffix(".jsp"); 
     return resolver; 
    } 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations(
       "/resources/"); 
    } 
} 
2

Override requestMappingHandlerMapping utilizzando WebMvcConfigurationSupport, può disattivare le configurazioni di default del vostro avvio di primavera. Un modo migliore potrebbe essere quello di utilizzare WebMvcRegistrations come,

@Configuration 
static class CustomRequestMappingHandlerMapping { 

    @Bean 
    public WebMvcRegistrationsAdapter webMvcRegistrationsHandlerMapping() { 
     return new WebMvcRegistrationsAdapter() { 
      @Override 
      public RequestMappingHandlerMapping getRequestMappingHandlerMapping() { 
       return new MyRequestMappingHandlerMapping(); 
      } 
     }; 
    } 
} 
Problemi correlati