Java

Spring MVCのコントローラーで任意のステータスコードを返す方法

Spring MVCにかぎらずなんですが、URIリソースが見つからない場合は、適切なステータスコードを返してブラウザにお知らせする必要があると思います。
例えば、マッピングには一致したが指定された条件に一致しないから404を指定したい場合などです。
まさに、Spring MVCで同様なことをしようと思ったら探し方がわるいのか、なかなか見つからなかったのですが、ようやく見つかりました。
@ResponseStatusアノテーションを使うみたいですね。

例えば404を返す場合は、

@ResponseStatus(value = HttpStatus.NOT_FOUND)
private class HttpStatus404Exception extends RuntimeException {
}

のような実行時例外クラスを作成して、以下のようにします。

@RequestMapping("/")
public String index(Model model) {
  throw new HttpStatus404Exception();
}

これは極端ですが、マッピングに一致すると404を返します。
ですが、これだとステータスごとに例外を作成しなければならないので、ちょっと面倒です。
まぁでも目標は達成できました。

参考サイト

trigger 404 in spring-mvc controller?

-Java
-

Copyright© ビー鉄のブログ , 2020 All Rights Reserved Powered by AFFINGER5.