2012-04-19 37 views
0

我用forward而不是redirect(隱藏在URL參數),問題是,我想一個片段傳遞給forward所以我的頁面滾動到指定的位置。 隨着redirect,這個工程:轉發而不是重定向,同時還滾動頁面片段

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

但隨着forward,它不滾動到錨位置:

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

我該如何解決這個問題?

回答

2

片段與redirect一起工作的原因是重定向告訴瀏覽器對指定的URL發出另一個(GET)請求。這爲瀏覽器提供了以下機會:1.抓取新頁面,2.滾動到合適的錨點。

使用forward,servlet容器只是告訴另一段代碼來處理請求 - 它對瀏覽器來說實際上是不可見的,所以瀏覽器將無法在任何地方滾動。這就是爲什麼fragmentisn't a valid option for forward

爲了做到這一點,你就必須要麼:

  • 重定向,而不是轉發,或
  • 用JavaScript來讓頁面滾動,或
  • 發送該片段與初始要求最終獲得承諾

以上任何一項都應在適當的條件下工作;但是,我不確定我們是否有足夠的關於您提出的請求的信息來提供更具體的示例。

+0

感謝羅布的想法,因爲我不能使用重定向,我用JavaScript做到了: <腳本類型= 「文/ JavaScript的」> \t window.location.hash =「$ {} params.acnhor 「; 謝謝,問題解決了。 – 2012-04-19 15:46:51

相關問題