Spring 3に"redirect:/new/url"
を返すときにHTTPステータスコードを指定する方法はありますか?Spring 3コントローラで文字列を返すときのリダイレクトのHTTPステータスコードを設定する
2
A
答えて
0
それを試したことはありませんが、org.springframework.web.servlet.view.RedirectView
の送信元を見ると、レスポンスのHTTPステータスを判断する方法がgetHttp11StatusCode()
です。
リクエスト時にorg.springframework.web.servlet.View#RESPONSE_STATUS_ATTRIBUTE
の設定でデフォルトの応答コードを上書きできるようです。 「redirect:
」ビューで戻る前に、単に
httpServletRequest.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, status)
と表示するだけです。
0
noted by ScolytusRedirectView
をstatusCode
に設定する必要があります。 "redirect:"
接頭辞を使用すると、常にHttpStatus.MOVED_TERMPORARILY
(302)というステータスになります。
コントローラーメソッドとRedirectView
の両方でString
を返す必要がある場合は、メソッドシグニチャーをObject
に戻す必要があります。例:
@RequestMapping
public Object someMethod() {
if (doRedirect) {
RedirectView rv = new RedirectView("/new/url");
rv.setStatusCode(HttpStatus.MOVED_PERMANENTLY); // set our own status code
return rv;
} else {
return "someView";
}
}
これはうまくいかず、決して行っていません;)https://jira.spring.io/browse/SPR-12719 – Scolytus