2012-08-13 70 views
1

使用Spring,我如何在視圖中檢索以下控制器屬性?從視圖訪問彈簧控制器名稱

  • 控制器名稱
  • 控制器的@RequestMapping URI
  • 操作方法名
  • 操作方法的@RequestMapping URI
  • ,我已經試過

一種方法是通過創建HandlerInterceptorAdapter和壓倒一切的子類的postHandle。我將我的子類註冊爲mvc:攔截器,以獲取給定路徑的列表 - 這是笨重的維護,但是避免我的攔截器被調用ResourceHandler請求(我不想)的唯一方法。在我的postHandle中,我可以輕鬆地添加2個名稱屬性,但不能添加URI ...

  1. 從HttpRequest對象解析需要對所有Controller RequestMappings進行約束。即我必須總是映射/控制器/行動或equiv計劃。相當有限。
  2. 創建ApplicationContext並使用requestURI查詢是太冗長了。

我在考慮放棄HandlerInterceptorAdapter,而是爲所有我的控制器定義一個BaseController來擴展。

我想問之前,我這樣做,有沒有更好的方法?

回答

0

你沒有說明爲什麼你需要這樣做(它有時有助於包括你的動機,因爲其他人可以建議替代方法)。

但是我猜測Spring 3.1特性鬆散地稱爲「端點文檔」可能會做你所要求的...請參閱RequestMappingHandlerMapping中的Spring documentation,它沒有提供很多細節,所以這個示例項目是最好的地方,看到它在行動:

+0

我需要在視圖中使用某些屬性(使用JSP/JSTL)來決定是否應該「突出顯示導航欄元素」。和「麪包屑的觀點應該包含什麼?」。 – CraigJPerry 2012-08-14 09:35:36

+0

爲什麼不使用'$ {pageContext.request.requestURI}'或其他請求對象屬性之一?需要控制器名稱看起來很誇張,你應該能夠只使用請求URI來實現它? – nickdos 2012-08-14 22:55:12

+0

我看不出用什麼方法來渲染一個麪包屑視圖,而不是在我的JSP中使用一些相當複雜的URI解析邏輯。 Take/assets/getbyid/12345 vs/assets/listbydate/2012/08/15如何將這2個網址轉換爲麪包屑,而無需知道在我的視圖層如何解釋URL?在我看來,更好的方法是在請求範圍級別提供知識,而不是在呈現時解析出來。 – CraigJPerry 2012-08-15 18:13:00