0

Spring3を使用するアプリケーションがあります。文字列に基づいてビューを構築するビューリゾルバーがあります。だから私のコントローラーにはこのようなメソッドがあります。

@RequestMapping(...)
public String method(){
  //Some proccessing
  return "tiles:tileName"
}

ブラウザのページを更新したために重複した送信を解決するためにRedirectViewを返す必要があるため、Spring redirect:プレフィックスを使用することを考えました。問題は、URLを使用してプレフィックスを変更した場合にのみリダイレクトされることです(リゾルバーが理解できる名前ではありません)。私はこのようなことをしたかった:

@RequestMapping(...)
public String method(){
  //Some proccessing
  return "redirect:tiles:tileName"
}

すべてのコントローラーメソッドから取得した文字列(解決可能なビュー名)でRedirectViewを使用する方法はありますか?

ありがとう

4

1 に答える 1

3

redirect: のプレフィックスが付いた呼び出しは URL であり、標準のブラウザー 302 リダイレクトで送信されます。ビューは URL ではないため、ビューにリダイレクトすることはできません。代わりに、「成功」ビューにマッピングする新しいサーブレットが必要になり、代わりにそれにリダイレクトします

@RequestMapping("processing.htm")
public String method(){
  //Some proccessing
  return "redirect:success.htm"
}

@RequestMapping("success.htm")
public String method(){
  return "tiles:tileName"
}

このケースは、処理段階からの特定のデータを必要としない「ありがとう」ページを表示する必要がある場合にうまく機能します。ただし、成功ページに処理からの情報を表示する必要がある場合は、2 つの方法があります。

1) URL の情報を get ポスト ("redirect:success.htm?message=hi") として渡します。これは信じられないほどハッキング可能であるため、強くお勧めしません。

@SessionAttributes2) とを使用して、http セッションに情報を保存することをお勧めします。@ModelAttribute

于 2010-04-13T22:50:39.783 に答える