我有一个问题,我需要尽快解决。

看,我需要从JSP页面显示当前服务的Spring Controller。名称不必在JSP本身中进行解析,实际上我正在使用另一个类(一种标签库)在每页的底部显示此信息。

有没有办法从外部类获取 Controller 名称? (当我在外面说时,我的意思是来自 Controller 本身以外的其他类。)
也许是从请求以某种方式? (或者一些Spring Security请求属性?)。
也许是拦截器?

我想避免只是为了解决此问题而从 Controller 扩展一个类。

任何建议都适用!

最佳答案

您可以实现 HandlerInterceptor *它具有方法postHandle,该方法具有您需要的两个参数:

  • Object handler-可以转换为HandlerMethod,包含有关已处理请求
  • 的Controller方法的信息
  • ModelAndView-您需要在其中添加有关处理方法
  • 的新信息

    完整的方法签名org.springframework.web.servlet.HandlerInterceptor#postHandle:
    void postHandle(HttpServletRequest request,
                    HttpServletResponse response,
                    Object handler,
                    ModelAndView modelAndView)
          throws Exception;
    

    *可以直接扩展HandlerInterceptor而不是直接实现HandlerInterceptorAdapter-这是一种方便的抽象类,它以空主体实现HandlerInterceptor的所有方法,因此只需要覆盖所需的方法即可。

    *不要感到困惑,这里有两个HandlerInterceptor类,一个用于Servlet,一个用于Portlet(org.springframework.web.portlet.HandlerInterceptor)。将HandlerInterceptor用于Servlet的oorg.springframework.web.servlet.HandlerInterceptor!

    09-27 04:39