[英]Spring MVC Controller classname from JSP / page
我有一個問題,還有一個我需要盡快解決的問題...在解決一些問題的其他方法上,我已經拔掉了頭發。
看,我需要從JSP頁面顯示當前服務的Spring Controller。 名稱不必在JSP本身中進行解析,實際上我正在使用另一個類(一種標簽庫)在每頁的底部顯示此信息。
有沒有辦法從外部類獲取控制器名稱? (當我在外面說時,我的意思是來自Controller之外的其他類。)也許是出於某種要求? (或者一些Spring Security請求屬性?)。 也許是攔截器?
我想避免從控制器擴展一個類來解決此問題。
任何建議都適用!
您可以實現HandlerInterceptor
*它具有方法postHandle
,該方法具有您需要的兩個參數:
Object handler
-可以HandlerMethod
為HandlerMethod
,包含有關已處理請求的Controller方法的信息 ModelAndView
您需要在其中添加有關處理方法的新信息 完整的方法簽名org.springframework.web.servlet.HandlerInterceptor#postHandle
:
void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView)
throws Exception;
*可以直接擴展HandlerInterceptorAdapter
而不是直接實現HandlerInterceptor
,它是一種方便的抽象類,它以空主體實現HandlerInterceptor
所有方法,因此只需要重寫所需的方法即可。
*不要混淆,有兩個HandlerInterceptor
類,一個用於Servlet,一個用於Portlet( org.springframework.web.portlet.HandlerInterceptor
)。 對Servlet使用HandlerInterceptor
oorg.springframework.web.servlet.HandlerInterceptor
!
從控制器本身開始,通常的java方式可能不會成功;因為spring創建了原始類的代理,所以不起作用:
String className = this.getClass().getSimpleName();
我認為您需要實現一個請求映射處理程序
您可以創建一個事后建議攔截器,該攔截器將在您的控制器被調用后被調用。 在此攔截器中,您可以掌握應用了此建議的pointCut方法。 一旦有了它,就可以將其添加為ModelAndView映射中的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.