1

「従来の」(非AJAX、ボタンクリックごとにページをリロードする)Webサイト/アプリでSpring MVCを使用する場合、通常はコントローラーを定義します。

@RequestMapping(value = "/someURL", method = RequestMethod.POST)
public ModelAndView updateThreshold(@RequestParam("x") String whatever) {

    ModelAndView mav = new ModelAndView();
    max.setView("someView");

    // Inject some models into the view.

    return mav;
}

次に、JSPビュー(someView.jsp)を作成し、コントローラーによって「挿入」されたSpringタグ/モデルを使用します。

しかし、jQueryを使用すると、GET / POSTリクエストが実行され、DOMの一部を更新するだけで済みます。私は2つのことを疑問に思っています:

  • jQueryを使用すると、Spring MVCコントローラーはどのような「ビュー」を設定(mav.setName(...))して返しますか?つまり、同じページ/ビューに対するAJAX呼び出しであるため、新しい「ビュー」はありません。jQueryの結果は、既存のページ/ビューを更新する必要があります。
  • サーバー側のエラーがある場合(つまり、一部@RequestParamに不正な値がある場合)、MVCコントローラーはjQueryが使用してエンドユーザーに表示できるエラーメッセージをどのように返しますか?

私は視覚的な学習者なので、コードスニペット(クライアント側のjQueryとサーバー側のコントローラー/ビューの両方)は非常に高く評価されています。前もって感謝します!

4

1 に答える 1

3

Spring MVC は、リクエストが「従来の」リクエストか AJAX リクエストかを気にしません。いくつかの潜在的な追加ヘッダーを除いて、両方のタイプのリクエストはまったく同じです。

したがって、AJAX 要求を使用してページの一部を更新する必要がある場合は、「従来の」ページで行っているようにコントローラーを使用してから、ページの一部のマークアップを生成するビューに転送します。リフレッシュする必要があります。したがって、完全な HTML ページ from <html>toを生成する代わりに</html>、ビューはページの一部のみを生成します。

また、コントローラーが HTML マークアップ以外のものを返すように送信することもできます。たとえば、XML や JSON などです。その場合、受信したデータを使用してページ DOM を更新するのは、応答を処理する JavaScript 関数次第です。

エラーは、「従来の」リクエストとまったく同じ方法で処理されます。たとえば、エラーが500発生した場合、AJAX 応答を処理する JavaScript コードが適切と判断した処理を実行する必要があります。たとえば、アラート ポップアップなどを表示します。

于 2012-09-26T13:09:25.380 に答える