Spring MVC:将控制器+动作名称传递给视图的最佳方法是什么?


问题内容

我想让视图知道调用哪个控制器和执行什么操作来生成它。实际上,我想在视图中执行以下操作:

<script>
    var controller = "${controllerName}";
    var controllerAction = "${controllerAction}";
</script>

并且,在后来包含的.js中,

<script src="/public/script.js"></script>

…在此.js中,我想访问两个变量:

if(controller == "UserController" && controllerAction == "Edit")
{
    // ...
}
else
{
    // ...
}

我的问题:将那些控制器和动作名称自动传递给视图的最佳方法是什么?

我的控制器扩展了一个抽象的“
BaseController”,所以我猜那里是将这些变量添加到ModelAttribute的最佳位置。我希望具体控制器对要添加的那些变量不做任何事情。但是父控制器如何知道子具体控制器的名称和操作的名称?

我可以在BaseController中检查StackTrace,但我真的不喜欢这种解决方案…

您有更好的建议解决方案吗?


问题答案:

为什么不能仅从您的URL中获取此信息?通常,URL映射到Spring中的控制器和动作。在javascript中,为什么不只是解析URL以获得此信息?如果问题是操作因帖子,获取或标题信息而不同,则可以将其作为参数附加在url中。