1

Spring mvc を使用していますが、次の問題があります。

私のコントローラーのすべてのメソッドは、jsp の名前を返します。プレゼンテーションに関しては、すべて問題ありません。問題はリンク (href) にあります。ウィンドウのリンクは変更されず、相対リンクによって不要な場所に移動します。

例(実際ではありません):

次の方法でアクセスできるビューと、次の方法でアクセスできる/test1/{id} 更新ビューがあります/test1/{id}/update

post メソッドは、最初のビューを保存して返します (表示画面に戻ります)。プレゼンテーションは問題なく、更新されたデータを見ることができます。しかし、ウィンドウの URL は変更されておらず、再度更新しようとすると、次の場所に送信されます。 /test1/{id}/update/update.

どうすればこれを解決できますか?

4

1 に答える 1

1

簡単な答え: リダイレクトを使用してください!

何か永続的なことをしている間は、リダイレクトを使用する必要があります。それらのURLにPOSTするときにデータを変更していると思います。したがって、絶対にリダイレクトを使用する必要があります。これにより、ユーザーが更新後にページを更新したときに問題が解決されます。データの再送信に関するブラウザの警告に気付いたことがありますか?

サンプルコード:

@RequestMapping("/test1/{id}/update")
public ModelAndView update(@PathVariable("id") String id){
    // make an update
    return new ModelAndView("redirect:/test1/" + id);
}

これにより、301 または 302 HTTP ステータスがユーザーに送信されます。そして、ブラウザはすぐにリダイレクト URL に従います。ビュー名ではなく、url を使用する必要があることに注意してください。

于 2013-01-20T10:33:13.420 に答える