2011-09-09 8 views

答えて

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) 

と表示するだけです。

+1

これはうまくいかず、決して行っていません;)https://jira.spring.io/browse/SPR-12719 – Scolytus

0

noted by ScolytusRedirectViewstatusCodeに設定する必要があります。 "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"; 
    } 
}