繁体   English   中英

执行重复Spring控制器代码的最佳方法是什么?

[英]Best way to execute repetitive Spring controller code?

我有一个库方法Common.addTheUsualStuffToTheModel(model) ,需要在我的应用程序的每个控制器方法中向模型添加各种属性。

@RequestMapping(value = "/everypath", method = RequestMethod.GET)
public final String everyHandler(ModelMap model)
{
    model = Common.addTheUsualStuffToTheModel(model);
    return "everyPage";
}

到目前为止,我一直在为每个处理程序方法添加相同的行:

    model = Common.addTheUsualStuffToTheModel(model);

但我担心这与“一次写入,随处使用”的原则不一致。

如何避免在每个处理程序中重复此代码?

你可以使用拦截器<mvc:interceptors>来做到这一点

在您的拦截器中,您可以添加任何内容作为请求属性(实际上是模型属性所在的位置)。 拦截器代码在每个方法之前或之后执行(与拦截器映射匹配)。

如果您不一定需要在控制器方法之前填充模型,则在postHandle方法中获取ModelAndView对象。

如何指定@ModelAttribute带注释的引用数据提供程序方法呢。 如果你有一个所有控制器的基类,并且该基类有@ModelAttribute注释方法,那么我相信模型中的数据可用于那些控制器处理的所有视图。 在Spring文档中查看15.3.2.8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM