0

forward(URLのパラメーターを非表示にするために)代わりに使用redirectします。問題は、フラグメントをに渡してforward、ページが指定された場所にスクロールするようにすることです。でredirect、これは機能します:

redirect(controller: "mycontroller", action: "myaction", fragment: "anchor")

ただし、を使用forwardすると、アンカー位置までスクロールしません。

forward(controller: "mycontroller", action: "myaction", fragment: "anchor")

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

4

1 に答える 1

2

フラグメントが機能する理由redirectは、リダイレクトがブラウザに指定されたURLに対して別の(GET)リクエストを行うように指示するためです。これにより、ブラウザに1.新しいページを取得し、2。適切なアンカーまでスクロールする機会が与えられます。

を使用forwardすると、サーブレットコンテナは、リクエストを処理するように別のコードに指示するだけです。ブラウザには事実上見えないため、ブラウザはどこにもスクロールできません。そのためfragment 、は有効なオプションではありませんforward

これを実現するには、次のいずれかを行う必要があります。

  • 転送する代わりにリダイレクトする、または
  • JavaScriptを使用してページをスクロールさせる、または
  • 最終的に転送される最初のリクエストでフラグメントを送信します

上記のいずれも、適切な条件下で機能するはずです。ただし、より具体的な例を提供するために、あなたが行っているリクエストに関する十分な情報があるかどうかはわかりません。

于 2012-04-19T15:36:37.500 に答える