2016-04-01 49 views
5

次のSpring 3.1のアクションでは、POSTリクエストに属性を追加してからPOSTを使用して外部URLにリダイレクトする必要があります(GETを使用できません) 。Spring、POSTを使用して外部URLにリダイレクト

@RequestMapping(value = "/selectCUAA", method = RequestMethod.POST) 
public ModelAndView selectCUAA(@RequestParam(value="userID", required=true) String cuaa, ModelMap model) { 
    //query & other... 
    model.addAttribute(PARAM_NAME_USER, cuaa); 
    model.addAttribute(... , ...); 
    return new ModelAndView("redirect:http://www.externalURL.com/", model); 
} 

しかし、このコードでは、GETメソッドが使用されます(属性はhttp://www.externalURL.com/に追加されます)。 POSTメソッドを使用するにはどうすればよいですか?外部URLからは必須です。

+2

そして、それはリダイレクトではありません。リダイレクトは常にGET要求になります。 POSTが必要な場合は、JavaコードからURLを呼び出して結果を渡す必要があります。 –

+0

も参照http://programmers.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect –

答えて

2

@stepanianのように、POSTでリダイレクトすることはできません。 しかし、そこにあるいくつかの回避策:

  1. は簡単なのHttpURLConnectionを行うとPOSTを使用しています。応答ストリームを出力した後。それは動作しますが、私はCSSにいくつか問題がありました。
  2. コントローラー内のデータを偽のページにリダイレクトした後に処理してください。このページには、ユーザーの操作なし(more details)とのjavascriptを通じて自動的にPOSTを行います:

HTML:

<form name="myRedirectForm" action="https://processthis.com/process" method="post"> 
    <input name="name" type="hidden" value="xyz" /> 
    <input name="phone" type="hidden" value="9898989898" /> 
    <noscript> 
     <input type="submit" value="Click here to continue" /> 
    </noscript> 
</form> 
    <script type="text/javascript"> 

     $(document).ready(function() { 
      document.myRedirectForm.submit(); 
     }); 

    </script> 
3

POSTでリダイレクトすることはできません。アクション内でHttpURLConnectionのようなクラスのJavaコードを使用してPOST要求を送信できます。

+0

ありがとう、私はこの例を使用しました:http://stackoverflow.com/questions/3324717/ send-http-post-request-in-java私のSpringコントローラ* selectCUAA *今何を返すべきですか?新しいWebページへのリダイレクトが必要です。 – Accollativo

+0

コードエンボスされたPOSTが完了した後にリダイレクトできます。 – stepanian

+0

属性なしでリダイレクトしますか?このようにして、ポストを呼び出し、取得した後に結果が得られるのは、最後の取得だけです。 (新しいURLは、投稿時にパラメータが必要なログインページです)。 しかし、ありがとう、monday私は試してみます – Accollativo

関連する問題