Model view controller SpringMVC:传递控制器的最佳方式是什么;视图的操作名称?
我希望视图知道调用了什么控制器和什么操作来生成它。事实上,我想在视图中这样做:Model view controller SpringMVC:传递控制器的最佳方式是什么;视图的操作名称?,model-view-controller,spring-mvc,Model View Controller,Spring Mvc,我希望视图知道调用了什么控制器和什么操作来生成它。事实上,我想在视图中这样做: <script> var controller = "${controllerName}"; var controllerAction = "${controllerAction}"; </script> 我的问题:自动将这些控制器和操作名称传递给视图的最佳方式是什么 我的控制器扩展了一个抽象的“BaseController”,所以我想将这些变量添加到ModelAttribu
<script>
var controller = "${controllerName}";
var controllerAction = "${controllerAction}";
</script>
我的问题:自动将这些控制器和操作名称传递给视图的最佳方式是什么
我的控制器扩展了一个抽象的“BaseController”,所以我想将这些变量添加到ModelAttribute中的最佳位置应该在那里。我更希望具体的控制器对要添加的变量不做任何事情。但是,父控制器如何知道子具体控制器的名称和操作的名称呢
我可以在BaseController中检查StackTrace,但我真的不喜欢这个解决方案
你有更好的建议吗?为什么你不能直接从你的url获取这些信息?通常,url映射到Spring中的控制器和操作。在javascript中,为什么不解析url以获取此信息?如果问题是操作因帖子、获取或标题信息的不同而不同,那么您可能可以将其作为参数附加到url中。为什么不能从url中获取此信息?通常,url映射到Spring中的控制器和操作。在javascript中,为什么不解析url以获取此信息?如果问题是操作因帖子、get或标题信息的不同而不同,那么您可能可以将其作为参数附加到url中。我找到了一个解决方案 使用Spring 3.1,我使用以下bean:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<bean id="baseInterceptor" class="xxx.xxx.xxx.BaseInterceptor" />
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
我找到了解决办法
使用Spring 3.1,我使用以下bean:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<bean id="baseInterceptor" class="xxx.xxx.xxx.BaseInterceptor" />
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
我将您的答案标记为解决方案,谢谢!事实上,在大多数情况下,解析url就可以做到这一点!我还发现了一种使用拦截器和Spring3.1自动传递这两个变量的方法(请参阅我下面的“解决方案”)。我将您的答案标记为解决方案,谢谢!事实上,在大多数情况下,解析url就可以做到这一点!我还发现了一种使用拦截器和Spring3.1自动传递这两个变量的方法(请参阅我的“下面的解决方案”)。谢谢分享。对于应用程序可能需要执行的任何日志记录,这可能也是一种很好的方法。我能想到这个的几种用途!如何将controllerName传递给另一个控制器?谢谢分享。对于应用程序可能需要执行的任何日志记录,这可能也是一种很好的方法。我能想到这个的几种用途!如何将controllerName传递给另一个控制器?
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<bean id="baseInterceptor" class="xxx.xxx.xxx.BaseInterceptor" />
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
public class BaseInterceptor extends HandlerInterceptorAdapter
{
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception
{
HandlerMethod handlerMethod = (HandlerMethod)handler;
modelAndView.addObject("controllerName", handlerMethod.getBean().getClass().getName());
modelAndView.addObject("controllerAction", handlerMethod.getMethod().getName());
}
}