2014-07-02 6 views
7

La mia applicazione è costruita utilizzando backbone su frontend e spring framework su backend. È una singola applicazione html. Percorsi sono gestite da spina dorsale, quindi ho un percorso backend con la struttura seguente:Spring serving contenuto statico mentre si dispone di percorso controller wildcard

@RequestMapping(value="/**", method=RequestMethod.GET) 
public String Pages() 
{ 
    return "index"; 
} 

A punto tutto al mio index.html. Il fatto è che i file di contenuto statico sono puntati anche su questa rotta, e io non voglio questo. Ho provato a configurare WebMvcConfigurerAdapter sovrascrivendo il metodo addResourceHandler per il contenuto statico , ma non funziona.

Come posso indirizzare ogni percorso al mio index.html tranne/js/** e/assets/**?

si

risposta

6

Grazie La prima cosa è che il metodo di controllo che viene mappato al /** prenderà la priorità su eventuali richieste di risorse. È possibile risolvere questo problema aumentando la precedenza di ResourceHandlerRegistry. Aggiungere una chiamata al registry.setOrder(Ordered.HIGHEST_PRECEDENCE) nel metodo di StaticResourceConfigurationaddResourceHandlers:

@Configuration 
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter { 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.setOrder(Ordered.HIGHEST_PRECEDENCE); 
     registry.addResourceHandler("/js/**").addResourceLocations("/resources/js"); 
    } 
} 

La seconda cosa è che, per impostazione predefinita, Primavera di avvio configura due gestori di risorse per voi per impostazione predefinita, one mapped to /** and one mapped to /webjars/**. A causa della modifica descritta sopra, ora avremo la priorità sul metodo nel controller che è anche mappato a /**. Per ovviare a questo, si dovrebbe disattivare la gestione delle risorse di default tramite un ambiente in application.properties:

spring.resources.addMappings=false 
+1

Ho provato la soluzione ma ottengo 404 errore in ogni richiesta ... Sì, sono sicuro che application.properties sono caricati –

+0

Ciò suggerisce che i mapping delle richieste siano configurati in modo errato. Sono registrati all'avvio. Consiglierei di guardare quell'output per capire cosa c'è che non va. –

Problemi correlati