2017-11-06 5 views
0

設定はとても簡単です。 私はgetとpostmethodを持つコントローラを持っています。 getmethodは、HTMLフォームのタイムラインテンプレートをレンダリングするために使用されるモデルを埋めます。SpringMVCは以前の呼び出しからモデルを取得します

ユーザがsubmitをクリックすると、formdataがpostmethodに投稿されます。この方法では、2つの結果を持つビジネスロジックが実行されます。

最初の可能性:すべてうまくいき、getmethodへのリダイレクトが実行されます。

第2の可能性:例外が発生します。その場合、ユーザは提出しようとしたデータを含む提出書式と同じ書類を提示されなければならない。その場合、私のpostmethodはgetmethodと同じテンプレートの識別文字列を返します。しかし、タイメレフは、モデルにはいくつかの属性が欠けていると私に伝えています。 getmethodのテンプレートのレンダリングに使用されたpostmethodと同じモデルをspringに挿入しないのはなぜですか?

postmethodのgetcallからモデルをリサイクルする方法はありますか?

+0

私たちのコードを示しています。 postメソッドでレンダリングされたビューで使用できるように、postメソッドでモデル属性を再度設定する必要があります。これは、要求範囲内にあり、1回の要求に対してのみ有効であるためです。 – MohamedSanaulla

+0

@MohamedSanaullaそれは私が聞くと予想される答えです。だから私はすでにあなたが提案したことをやったし、それは動作します。私は、コードとパフォーマンスのシンプルさに合った簡単な方法があることを願ってこの質問を投稿しました(モデル属性を初期化するためにいくつかのdb-querysを作成する必要があるため)。とにかく、ありがとう。 –

+0

私はセッションを使用しているのは、それ自身の問題があるため、セッションを言っていませんでした。可能な限りあなたの要求をステートレスに保つことは良いことです。 DBクエリは、最近アクセスしたクエリが次に実行されるときに高速になるため、問題ではありません。 – MohamedSanaulla

答えて

1

私は通常、投稿方法の後にRedirectAttributesを使用してリダイレクトします。これは、リダイレクトでもモデルにデータを追加するために使用されます。

これは、それを使用する方法の例です:

@PostMapping("/course") 
public String addCourse(@RequestParam("course") Course course, RedirectAttributes redirectAttributes) { 

    // show a popup that the `account.name` has been added 
    redirectAttrs 
     .addAttribute("course", course) 
     .addFlashAttribute("message", "Course created!"); 

    return "redirect:/courseOverview"; 
    } 
+0

あなたの答えに感謝します。私は今、他のいくつかのことについて私の心を持っていますが、私は次の週にそれを試してみましょう。 –

関連する問題