Lassen Sie uns meine Website-Namen sagen: foo.comFrühling RequestMapping mit Root-Pfad (/ {} benutzerdefinierte)
Wenn ein Benutzer foo.com, ich index.html zeigen wollen.
Wenn ein Benutzer foo.com/something eintippt, möchte ich, dass der Server die Anforderung am Controller abfängt.
Hier ist, was ich in der Homecontroller tat
@Controller
public class HomeController {
@RequestMapping(value={"/"}, method=RequestMethod.GET)
public String getHome() {
return "index.html";
}
}
Und sollte die CustomController die Anfrage jedoch
@Controller
public class CustomController {
@RequestMapping(value={"/{custom}"}, method=RequestMethod.GET)
public String getCustom(@PathVariable String custom) {
// Do something here..
}
}
fangen, wirft er einen Fehler: Kreisbahn Ansicht [index.html ]: würde erneut zur aktuellen Handler-URL [/index.html] zurückkehren. Das liegt daran, dass der CustomController die GET-Anforderung abfängt: foo.com/index.html, nachdem der HomeController die Zeichenfolge: index.html zurückgegeben hat.
habe ich einige der Forschung wie folgt aus:
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets"); // My asset
registry.addResourceHandler("index.html").addResourceLocations("file:/index.html");
} // It's not working
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/" + FileNames.INDEX);
} // This also not working
}
Und die Anmerkung von @Controller Wechsel in der CustomController @RestController ist keine Option.
Ich habe auch keine JSP-Dateien im Projekt - sie sind einfach * .html-Dateien.
I Frühling 1.3.3 Release verwenden, so helfen Sie mir.