Java 来自JSP/page的Spring MVC控制器类名
我有个问题,我需要尽快解决。。。在研究如何解决这个问题时,我已经把头发拔了出来 请看,我需要从JSP页面显示当前服务的Spring控制器。该名称不必在JSP本身中解析,我实际上使用另一个类(一种标记库)在页面底部显示该信息 有没有办法从外部类获取控制器名称?(当我说外部时,我指的是来自控制器本身以外的另一个类。) 也许是出于某种要求?(或某些Spring安全请求属性?)。 也许是拦截器 我希望避免仅仅为了解决这个问题而从控制器扩展类Java 来自JSP/page的Spring MVC控制器类名,java,spring,jsp,spring-mvc,servlets,Java,Spring,Jsp,Spring Mvc,Servlets,我有个问题,我需要尽快解决。。。在研究如何解决这个问题时,我已经把头发拔了出来 请看,我需要从JSP页面显示当前服务的Spring控制器。该名称不必在JSP本身中解析,我实际上使用另一个类(一种标记库)在页面底部显示该信息 有没有办法从外部类获取控制器名称?(当我说外部时,我指的是来自控制器本身以外的另一个类。) 也许是出于某种要求?(或某些Spring安全请求属性?)。 也许是拦截器 我希望避免仅仅为了解决这个问题而从控制器扩展类 任何建议都是宝贵的 正常的java方式,从M到控制器本身可能获
任何建议都是宝贵的 正常的java方式,从M到控制器本身可能获胜;t在spring创建原始类的代理时工作:
String className = this.getClass().getSimpleName();
我认为您需要实现一个您可以创建一个after advice拦截器,它将在调用控制器后被调用。在这个拦截器中,您可以获得应用此建议的切入点方法。一旦有了它,就可以将其作为属性添加到ModelAndView映射中 您可以实现一个*它有一个方法
postHandle
,该方法具有您需要的两个参数:
-可以转换为对象处理程序
,其中包含有关已处理请求的控制器方法的信息HandlerMethod
-您需要在这里添加有关处理方法的新信息ModelAndView
org.springframework.web.servlet.HandlerInterceptor#postHandle
:
void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView)
throws Exception;
*可以扩展HandlerInterceptorAdapter
,而不是直接实现HandlerInterceptorAdapter
,它是一个方便的抽象类,用空体实现HandlerInterceptor
的所有方法,因此只需重写所需的方法
*不要混淆,有两个
HandlerInterceptor
类,一个用于servlet,一个用于portlet(org.springframework.web.portlet.HandlerInterceptor
)。对于servletoorg.springframework.web.servlet.HandlerInterceptor
,请使用HandlerInterceptor
当前服务控制器的可能重复,您是指刚刚处理请求并呈现当前加载视图的控制器。可能重复@Pratik是的,完全相同。我想从控制器外部获取这些信息。我不想编辑一堆控制器只是为了让它工作,我想让它从一个拦截器或外部类工作。这需要我编辑一堆控制器。我更想通过使用拦截器让它在全球范围内运行such@RobinJonssonRequestMappingHandlerMapping不需要编辑现有的控制器谢谢!这正是我所需要的。为了弄清楚这是如何解决我的问题的。首先,我将handler
转换为HandlerMethod
,然后从HandlerMethod.getMethod().getDeclaringClass().getName()
中获取类名,并将其设置为请求属性,然后可以在自定义标记库中使用。