在这种情况下,必须始终在每个请求中都执行一个控制器以在模型中设置一些默认值,然后再执行所需的控制器。如何设置一个主控制器始终执行,包括同一请求中的其他控制器?

最佳答案

您可以创建一个带有@ModelAttribute注释方法的基本控制器类,该方法在每个请求之前都会在实际的处理程序方法之前被调用,例如

@ModelAttribute
public void everyRequest(WebRequest request, Model model) {
    model.addAttribute("default", true);
}


剩下的就是从您的实际控制器扩展此基本控制器类

如果您使用的是Spring 4.x,更好的方法是使用@ControllerAdvice来辅助所有组件或选定的一组组件,并且可以用于添加模型属性,应用常见的初始化绑定或错误处理。一个例子

@ControllerAdvice
class Advice {

    @ModelAttribute
    public void everyRequest(Model model) {
        model.addAttribute("default", true);
    }

}

08-18 05:28
查看更多