[英]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.