2015-02-10 13 views
17

Mam static folder o następującej strukturze:Wiosna bagażnika nie mapuje żądania do folderu `index.html` plików

index.html
docs/index.html

Spring Boot poprawnie odwzorowuje żądania / na index.html. Ale nie odwzorowuje żądania /docs/ na żądanie (działa poprawnie).

Jak zmapować foldery/podfoldery do odpowiednich plików index.html?

+0

Czy mapowanie widok kontroler zasugerowałem odpowiedź na pytanie? Jeśli tak, zaakceptuj to. W przeciwnym razie wyjaśnij swój problem, a ja z przyjemnością zaktualizuję swoją odpowiedź. – hzpz

Odpowiedz

2

To nie jest odwzorowanie Spring Boot do index.html to silnik serwletu (to strona powitalna). Jest tylko jedna strona powitalna (zgodnie ze specyfikacją), a przeglądanie katalogów nie jest funkcją kontenerów.

+5

to wyjaśnia problem, ale nie sugeruje rozwiązania, więc nie mogę zaakceptować tej odpowiedzi. –

+1

Nie sądzę, że istnieje rozwiązanie inne niż pisanie własnego programu obsługi serwletu przeglądarki katalogów. Mogę zasugerować, że jeśli chcesz? –

18

Można ręcznie dodać mapowanie widok kontrolera do tej pracy:

@Configuration 
public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/docs").setViewName("redirect:/docs/"); 
     registry.addViewController("/docs/").setViewName("forward:/docs/index.html"); 
    super.addViewControllers(registry); 
    } 
} 

Pierwszy mapowanie powoduje MVC wiosny wysłać przekierowanie do klienta jeśli /docs (bez spływu ukośnik) pobiera wymagane. Jest to konieczne, jeśli masz względne linki w /docs/index.html. Drugie odwzorowanie przekazuje każde żądanie wewnętrznie (bez wysyłania przekierowania do klienta) do /docs/ do podkatalogu .

+0

Działa również z zagnieżdżonymi podfolderami: 'registry.addViewController ("/v2/docs ") setViewName (" przekierowanie:/v2/docs/");' i 'registry.addViewController ("/v2/docs/"). setViewName ("forward: /v2/docs/index.html"); ' –

0

Wiosenne uruchamianie programu show index.html domyślnie.

ale index.html powinien być w /zasobu/statyczny lub /public

przykład:

https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-static 
Powiązane problemy