10

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";
  }

}

しかし、それではリダイレクトの場合の正しい応答ステータスが得られません。

@ResponseStatus2 つのステータスが考えられるため、単純に を追加することはできません。を手動で操作するHttpServletResponseよりもきちんとした方法があることを願っています。そして、使用するビュー名を指定したいので、リクエストハンドラーResponseEntityにステータスを適切に設定したオブジェクトを返させることができません。

4

1 に答える 1