1

Spring MVCのフラッシュ属性を利用するために以下のコントローラーを拡張するにはどうすればよいですか?ユースケースはコピー機能です。

POST / REQUEST / GETの実装:

  1. クライアントはUIの「コピー」ボタンをクリックします
  2. サーバーは応答「Location」ヘッダーを設定します
  3. クライアントは「path/to / page?copy」にリダイレクトします
  4. サーバーはModelAndViewを提供します
  5. クライアント(jQuery成功関数)はwindow.locationを設定します

FooControllerリダイレクトメソッド:

@RequestMapping(value = "{fooId}", method = POST, params = { "copy" })
@Transactional
@ResponseStatus(CREATED)
public void getCopyfoo(@PathVariable String fooId, 
HttpServletResponse response, RedirectAttributes redirectAttrs) {
    response.setHeader("Location", uriPath);
    //no worky?!:
    redirectAttrs.addFlashAttribute("barKey", "barValue");
}

FooController getメソッド:

@RequestMapping(value = "{fooId}", method = GET)
@Transactional(readOnly = true)
public ModelAndView findFooById(@PathVariable String fooId, 
HttpServletRequest request){ 
    Map<String, ?> map = RequestContextUtils.getInputFlashMap(request);
    // map is empty...
    return modelAndViewFromHelperMethod();
}
4

1 に答える 1

0

RedirectAttributesでのみ動作するのではないかと心配しているRedirectViewので、コントローラーは次のように戻る必要があります。

1. String: "redirect:/[uriPath]"
2. new RedirectView([uriPath])

本当にJSでサーバーの応答を処理する必要がある場合は、HTTPステータス302を処理すると役立つでしょう。

于 2012-11-15T23:25:42.557 に答える