【发布时间】:2016-03-17 04:37:29
【问题描述】:
我想在系统关闭前 5 分钟在特定页面上显示警告消息。我没有手动将其添加到每个这些页面,而是创建了一个带有 @ModelAttribute 方法的 @ControllerAdvice 类,该方法将消息添加到 Model 参数中,但据我了解阅读文档和 SO 以及一些初始测试,此模型属性将被添加到每个方法都带有@RequestMapping。
我意识到我可以重构我的代码,以便目标方法都在一个控制器中,并将 @ControllerAdvice 限制在该控制器中,但我最终会在该控制器中得到一组其他不相关的方法,这会混淆我的控制器的整体结构。
那么,有没有办法指示@ModelAttribute 应用于多个控制器中的哪些特定方法?自定义注释会是一个解决方案吗(不确定它是如何工作的)?如果可能的话,我想通过注释来做到这一点。
编辑:
@ControllerAdvice 代码非常基本:
@ControllerAdvice
public class GlobalModelController {
private final Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private MaintenanceInterceptor maintInterceptor;
@ModelAttribute()
public void globalAttributes(Model model, Locale locale) {
if (maintInterceptor.isMaintenanceWindowSet() && !maintInterceptor.isMaintenanceInEffect()) {
String msg = maintInterceptor.getImminentMaint(locale);
model.addAttribute("warningMaint", msg);
logger.debug("maint msg= " + msg);
}
}
}
【问题讨论】:
-
能否请您添加一些代码来阐明您到目前为止所做的尝试?
标签: spring-mvc spring-4