2013-06-21 2 views
7

Spring MVCリクエストハンドラでHTTPステータスコードを条件付きで簡単に設定する方法はありますか?HttpServletResponseを直接操作せずにHTTPステータスを条件付きで設定する

私は、新しいリソースの作成のためにPOSTリクエストに応答するリクエストハンドラを持っています。リクエストが有効な場合は、新しいリソースのURIにリダイレクトし、201(作成済み)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"; 
    } 

}

のステータスコードを与えるべきではありませんしかし、それは与えるものではありません。リダイレクトの場合の正しい応答ステータス

ステータスが2つありますので、単に@ResponseStatusを追加することはできません。私はmanually manipulating the HttpServletResponseよりも控えめな方法があることを望んでいます。使用するビュー名を指定したいので、私はhave the request handler return a ResponseEntity object with the status set appropriatelyできません。

答えて

3

レスポンスコード201が必要な場合は、リソースが作成されたときにHttpStatus.CREATEDResponseEntityを返し、それ以外の場合はビュー名を返すことができます。その場合は、リダイレクト(httpコード301)を使用することはできません。 RedirectViewを参照してください。

+0

"もしそうなら、私は知っているリダイレクトを使うことはできません。それが私の質問のポイントです – Raedwald

関連する問題