2016-11-16 8 views
0

は、私は、結果として、JSPページ名を返しています。これにより、HTTPステータスコード200 OKが返されます。このステータスコードを201のように変更するにはどうしたらいいですか?Spring MVCのリターンカスタムHTTPステータスコード(エラーなし)Spring MVCの@RequestMapping注釈で

@ResponseStatusは動作しません。また、カスタムJSPページのみを返す必要があるため、HttpServletResponseは機能しません。

@RequestMapping(method = RequestMethod.POST) 
public String addPhone(@ModelAttribute("phone") Phone phoneVO) { 
       phoneManager.addPhone(phoneVO); 
       return "redirect:/phone"; 
} 
+1

あなたが投稿したことは、あなたがリダイレクトをやっている301または302を返す必要があります。 –

+0

HTTP 200 OK –

答えて

0

[OK]を、私は解決策を見つけました。したがって、リダイレクトの代わりに、JSPページを直接呼び出しています(パラメータの再送信中)。

私はリダイレクトと思い、ステータスがOK HTTPなければなりません。私のようなモデルオブジェクトを返す状態に設定したいあなたのそれらのために

-1
@RequestMapping(method = RequestMethod.POST) 
public String addPhone(@ModelAttribute("phone") Phone phoneVO) { 
    phoneManager.addPhone(phoneVO); 
    return "/phone"; 
} 

私が終わった前に送らおっと、。 HttpServletResponseをパラメータとして追加し、それを使ってコードを設定することができます。

+0

を返す 'sendRedirect'が' setStatus'の値を上書きしようとしています。あなたのコントローラタイプにServlet APIを関与させなくても、リダイレクトを実現するより良い方法があります。 –

+0

今私はあなたが何を示唆しているか分かりません。 –

+0

質問の通り、HttpServletResponseを使用することはできません。私はCustome JSPページだけで応答する必要があるからです。リダイレクトが応答ステータスを上書きしているように見えます。リダイレクトする別の方法を見つける必要があります。 –

1

あなたは次のことをやってみてください、あなたは、任意のリダイレクトなしで代わりにビュー名を返す必要があり、春のビューリゾルバは、カスタムJSPを解決するためにニードフルを行う必要があります。 addPhoneの責任は、サーバ上に新しいリソースを作成することであることは確かであるとして(あなたが適切にビューリゾルバを設定する必要があります)

@RequestMapping(method = RequestMethod.POST) 
public String addPhone(@ModelAttribute("phone") Phone phoneVO, HttpServletResponse response) { 
      phoneManager.addPhone(phoneVO); 
      response.setStatus(HttpServletResponse.SC_CREATED); 
      return "phone"; 
} 

その他のオプションは、あなたのハンドラメソッド自体に@ResponseStatusアノテーションを使用することができます。したがって、ハンドラメソッドでステータスを定義することができます。

@SotiriosDelimanolisによって述べたよう

response.setStatus(HttpServletResponse.SC_CREATED); return "phonePage";

は、リダイレクトのsetStatusの値を上書きした

@RequestMapping(method = RequestMethod.POST) 
@ResponseStatus(HttpStatus.CREATED) 
public String addPhone(@ModelAttribute("phone") Phone phoneVO, HttpServletResponse response) { 
      phoneManager.addPhone(phoneVO); 
      return "phone"; 
} 
+0

電話機は実際にはURL(/ phone)であり、ビュー名ではありません。リダイレクトする必要があるのは、ビューを直接呼び出すだけではパラメータを渡すことができないからです。 –

+0

@ ShubhamVadheraあなたの質問にあなたが言及しているパラメータは何ですか? – ScanQR

+0

'model.addAttribute'を介して、プログラムからjspページへの属性。次に例を示します。 'model.addAttribute(" nextid "、phoneManager.getNextID());' –

0

:ケースの何かがうまくいかない中で、これは誰かに役立ちます

@RequestMapping(value = "/yourRoute", method = RequestMethod.POST) 
public ModelAndView accountsPagePOST(@RequestBody final String body) 
{ 
    ModelAndView model = new ModelAndView("yourView"); 
    //TODO do your logic and add your objects 
    model.setStatus(HttpStatus.OK); 
    return model; 
} 

希望を...あなたは明らかに失敗したステータスを設定することができます。

関連する問題