0

我使用forward而不是redirect(隐藏url中的参数),问题是我想传递一个片段,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,servlet 容器只是告诉另一段代码来处理请求 - 它实际上对浏览器不可见,因此浏览器将无法滚动到任何地方。这就是为什么fragment 不是forward.

为了实现这一点,您必须:

  • 重定向而不是转发,或
  • 使用 JavaScript 使页面滚动,或
  • 发送带有最终被转发的初始请求的片段

以上任何一项都应在适当的条件下工作;但是,我不确定我们是否有关于您提出的请求的足够信息来提供更具体的示例。

于 2012-04-19T15:36:37.500 回答