2016-12-27 15 views
1

私は春のMVCを使用しています呼び出され、私は、コントローラで次のような方法がないされています Spring MVCの:コントローラのメソッドは

@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); 
    } 
} 

ユーザーは、以下のURL http://localhost:8080/myapp/web/ redirectToIndexUi方法に入る

が呼び出されますが、この場合、 http://localhost:8080/myapp/web/index.html redirectToIndexUiメソッドは呼び出されません。理由は何でしょうか?

+0

あなたは本当にそれが無限のリダイレクトループにつながるので、それが好きではありません! –

答えて

2

コントローラが呼び出されなかった理由はマッピングです。コントローラメソッドを'/web'というURIにマッピングしていますが、'/web/index.html'ではなくマッピングしています。

'/web/**'のようなワイルドカード文字を使用して、コントローラのメソッドを使用するために/ web /を含むすべての要求をポイントすることができます。あなたのリクエストがhttp://localhost:8080/myapp/web/**に似た何かをヒットするたびに、あなたのメソッドが呼び出されるようにします。

+0

/web /の下にあるすべてのページのリダイレクト動作を取得するには、 '/ web/*'マッピングを使用できます。 – ZeusNet

関連する問題