Spring MVC リクエストハンドラーで HTTP ステータスコードを条件付きで便利に設定するにはどうすればよいですか?
新しいリソースを作成するために、POST リクエストに応答するリクエスト ハンドラがあります。リクエストが有効な場合は、新しいリソースの URI にリダイレクトして、201 (Created) HTTP ステータス コードを返します。リクエストが無効な場合、送信されたフォームのエラーを修正する機会をユーザーに与える必要があり、ステータス コード 201 を与えるべきではありません。
@RequestMapping(value = { "/myURI/" }, method = RequestMethod.POST)
public String processNewThingForm(
@ModelAttribute(value = "name") final String name,
final BindingResult bindingResult) {
myValidator.validate(name, bindingResult);
if (!bindingResult.hasErrors()) {
getService().createThing(name);
return "redirect:" + name;
} else {
return "newThingView";
}
}
しかし、それではリダイレクトの場合の正しい応答ステータスが得られません。
@ResponseStatus
2 つのステータスが考えられるため、単純に を追加することはできません。を手動で操作するHttpServletResponse
よりもきちんとした方法があることを願っています。そして、使用するビュー名を指定したいので、リクエストハンドラーResponseEntity
にステータスを適切に設定したオブジェクトを返させることができません。