特定のコーディングソリューションよりもアドバイスを求めていると思います。シナリオは次のとおりです。
- 新しいユーザーを作成できるフォームがあります
このフォームには、Springコントローラーを介したGETリクエストを介してアクセスします
@RequestMapping(value = "/secure/clients", method = RequestMethod.GET) public String prepareNewClient(final Principal principal, final ModelMap map) { map.addAttribute("client", new Client()); return "secure/clients"; }
フォームが表示され、すべて正常に機能し、次を使用して新しいクライアントを送信します
$.ajax({})
送信により、コントローラー上の次のメソッドへの同じURLを使用してPOSTリクエストがトリガーされます
@RequestMapping(value = "/secure/clients", method = RequestMethod.POST) public @ResponseBody JsonResponse saveClient( @ModelAttribute("client") final Client client, final BindingResult result, final Principal principal, final ModelMap map) { // validate input // save client // prepare JsonResponse object return jsonResponse; }
完了後、ユーザーを同じ画面に表示し、フォームでPOSTではなくPUTをトリガーするようにします。これは問題ありません。jQueryでそれを実現できますが、フォームを再度送信するとすぐに、クライアントはもう存在しModelMap
ません。
保存したクライアントをModelMap
POSTメソッドに追加しようとしましたが、それでも機能しませんでした。
私はそれを正しい方法でやっているかどうか完全にはわかりません。正直なところ、私が見たすべてのチュートリアルは、多かれ少なかれ私が行っていることを使用していますが、 PUT要求を持っているものはありません-ほとんどの場合、オブジェクトの作成を扱っていますが、問題はありません。
私が念頭に置いているのは、コントローラーメソッドをとにマッピングし、別のコントローラーメソッドをとマッピングする必要があるかもしれない/secure/clients/{clientId}
というHTTP.GET
こと/secure/clients/{clientId}
ですHTTP.PUT
。
しかし、それが理にかなっているかどうかはわかりませんので、少し迷っています。
- コントローラを完全にJSON呼び出しで作成する必要がありますか?
- このシナリオでは、ユーザーをリダイレクトしてAJAX呼び出しを忘れる必要がありますか?
提案は大歓迎です。ありがとうございました!