簡體   English   中英

JSP /頁面中的Spring MVC Controller類名

[英]Spring MVC Controller classname from JSP / page

我有一個問題,還有一個我需要盡快解決的問題...在解決一些問題的其他方法上,我已經拔掉了頭發。

看,我需要從JSP頁面顯示當前服務的Spring Controller。 名稱不必在JSP本身中進行解析,實際上我正在使用另一個類(一種標簽庫)在每頁的底部顯示此信息。

有沒有辦法從外部類獲取控制器名稱? (當我在外面說時,我的意思是來自Controller之外的其他類。)也許是出於某種要求? (或者一些Spring Security請求屬性?)。 也許是攔截器?

我想避免從控制器擴展一個類來解決此問題。

任何建議都適用!

您可以實現HandlerInterceptor *它具有方法postHandle ,該方法具有您需要的兩個參數:

  • Object handler -可以HandlerMethodHandlerMethod ,包含有關已處理請求的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM