2011-06-07 94 views
2

背景: 我爲應用程序創建了自己的TagLib。其中一個標籤必須依賴當前的請求URL(路徑& url參數)。 我有兩個gsp文件 - 佈局和常規頁面。如何訪問控制器外部的url(或grails params)?

問題: 我試圖讓從標籤處理當前請求的URL使用本:但

request.requestURI 

,而不是我有什麼瀏覽器

http://localhost:8888/gbv/999/index 

出於某種原因,它會返回類似這樣的內容,當從常規頁面調用標籤時:

/gbv/grails/index.dispatch 

它將返回這一點,當標籤從模板(這是確定)調用:

/gbv/999/index 

問: 如何做一個(或兩個的這一點)

  1. 得到相同可以從控制器訪問的「參數」實例(無需修改控制器)
  2. 獲取當前請求url(與用戶在瀏覽器中相同)

回答

4

只需在標記類中引用params即可獲得對參數的引用。

如果您想要重新構建請求的完整路徑(如瀏覽器所示),您可以使用request對象的方法(例如HttpServletRequest的實例)來完成此操作。

  • getContextPath()
  • getRequestURI()
  • getServerName()
  • getServerPort()
+0

謝謝!其實它很簡單。只需使用「params」。所有當前參數已經存在。 順便說一句:非其他選項是有幫助的。 – 2011-06-07 10:21:00

+0

不,這不起作用。 「參數」在模型中不可用。我仍在尋找一個可行的解決方案。 – Sliq 2013-02-20 14:14:43

+0

@Panique我沒有說它在模型(域類)中可用,我說它可以在TagLib中使用。參數也可以通過控制器或普通服務供應商獲得 – 2013-02-20 15:15:30

3

使用下面

request.forwardURI

0

使用${params.id}到獲取您正在查看的當前項目的ID。


另外,
使用 ${controllerName}獲取控制器名稱。
使用 ${actionName}獲取動作名稱

相關問題