私のWebアプリケーションにはいくつかのフォームがあり、その中で最も単純なのはログインフォームです(私はthymeleafを使用しています)。
<form method="post" action = "#" th:action = "@{/account/login}">
Username: <input name="username" type="text" /> <br />
Password: <input name="password" type="password" /> <br />
<input name="login" type="submit" value="Login" />
</form>
このための私のコントローラーハンドラーメソッドは次のとおりです。
@RequestMapping(value = "/account/login", method = RequestMethod.POST, params = "login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
Model model) {
// do some logging in
return "/account/profile";
}
これに関する私の問題は、POSTを実行しているため/account/login
、ブラウザのアドレスバーに表示されることです。本当に見せたいです/account/profile
。/account/profile
概念的には正しくありませんが、代わりにPOSTを実行する必要があります。
別の解決策は、POSTを実行し/account/login
、成功した後、リダイレクトしてGETを実行すること/account/profile
です。
私もそのようなハンドラーメソッドを持っていると仮定します:
@RequestMapping(value = "/account/login", method = RequestMethod.GET)
public String loginPage() {
return "/account/login";
}
RESTのようなURLマッピングの概念に適合する可能性のある他のソリューションは何ですか?