2016-12-27 6 views
1
aufgerufen

Ich verwende Spring MVC und ich habe eine folgende Methode in der Steuerung:Spring MVC: Controller-Methode wird nicht

@RequestMapping(value = {"/web", "/web/"}) 
public void redirectToIndexUi(HttpServletRequest request, HttpServletResponse response) { 
    try { 
     //some condition 
     response.sendRedirect(request.getContextPath() + "/ui/index.html"); 

    } catch (IOException ex) { 
     LOGGER.error("IOException is thrown while trying to redirect to index.html page.", ex); 
    } 
} 

Wenn ein Benutzer gibt die folgende URL http://localhost:8080/myapp/web/ redirectToIndexUi Methode aufgerufen wird, aber in diesem Fall http://localhost:8080/myapp/web/index.html Die redirectToIndexUi-Methode wird nicht aufgerufen. Was könnte der Grund sein?

+0

Sie werden das wirklich nicht mögen, da dies zu einer endlosen Umleitungsschleife führen würde! –

Antwort

2

Der Grund, warum Ihr Controller nicht aufgerufen wurde, ist Ihr Mapping. Sie ordnen Ihre Controller-Methode dem URI '/web' und nicht '/web/index.html' zu.

Und Sie können Platzhalterzeichen wie '/web/**' verwenden, um jede Anfrage mit/web/darin zu zeigen, um die Methode Ihres Controllers zu verwenden. So wird Ihre Methode immer dann aufgerufen, wenn Ihre Anfrage einen ähnlichen Wert wie http://localhost:8080/myapp/web/** erreicht.

+0

Wenn Sie das Umleitungsverhalten für alle Seiten unter/web/erhalten möchten, können Sie das Mapping '/ web/*' verwenden – ZeusNet

Verwandte Themen