Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自JSP/page的Spring MVC控制器类名_Java_Spring_Jsp_Spring Mvc_Servlets - Fatal编程技术网

Java 来自JSP/page的Spring MVC控制器类名

Java 来自JSP/page的Spring MVC控制器类名,java,spring,jsp,spring-mvc,servlets,Java,Spring,Jsp,Spring Mvc,Servlets,我有个问题,我需要尽快解决。。。在研究如何解决这个问题时,我已经把头发拔了出来 请看,我需要从JSP页面显示当前服务的Spring控制器。该名称不必在JSP本身中解析,我实际上使用另一个类(一种标记库)在页面底部显示该信息 有没有办法从外部类获取控制器名称?(当我说外部时,我指的是来自控制器本身以外的另一个类。) 也许是出于某种要求?(或某些Spring安全请求属性?)。 也许是拦截器 我希望避免仅仅为了解决这个问题而从控制器扩展类 任何建议都是宝贵的 正常的java方式,从M到控制器本身可能获

我有个问题,我需要尽快解决。。。在研究如何解决这个问题时,我已经把头发拔了出来

请看,我需要从JSP页面显示当前服务的Spring控制器。该名称不必在JSP本身中解析,我实际上使用另一个类(一种标记库)在页面底部显示该信息

有没有办法从外部类获取控制器名称?(当我说外部时,我指的是来自控制器本身以外的另一个类。) 也许是出于某种要求?(或某些Spring安全请求属性?)。 也许是拦截器

我希望避免仅仅为了解决这个问题而从控制器扩展类


任何建议都是宝贵的

正常的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
)。对于servlet
oorg.springframework.web.servlet.HandlerInterceptor
,请使用
HandlerInterceptor

当前服务控制器的可能重复,您是指刚刚处理请求并呈现当前加载视图的控制器。可能重复@Pratik是的,完全相同。我想从控制器外部获取这些信息。我不想编辑一堆控制器只是为了让它工作,我想让它从一个拦截器或外部类工作。这需要我编辑一堆控制器。我更想通过使用拦截器让它在全球范围内运行such@RobinJonssonRequestMappingHandlerMapping不需要编辑现有的控制器谢谢!这正是我所需要的。为了弄清楚这是如何解决我的问题的。首先,我将
handler
转换为
HandlerMethod
,然后从
HandlerMethod.getMethod().getDeclaringClass().getName()
中获取类名,并将其设置为请求属性,然后可以在自定义标记库中使用。