1

我在我的系统中使用 Spring MVC + Apache Tiles + JSPX 进行开发。

我想将登录表单放在每个页面中。在登录过程中我想使用@ModelAttribute("loginModel")LoginDTO

在 Spring 文档页面中,我认为我必须在每个控制器中定义一个方法,我想在其中显示该模型,如下所示:

@ModelAttribute("loginModel")
public LoginDTO loginModel() {
   return new LoginDTO();
}

有没有什么方法可以让我只定义一个控制器,并在我编写登录表单 jsp 的每个页面中工作?

谢谢你的回答!

4

2 回答 2

5

如果您使用的是 Spring 3.2 或更高版本,则可以使用新的@ControllerAdvice注释。从@ModelAttribute的文档中:

@ModelAttribute 方法也可以在带有@ControllerAdvice 注释的类中定义,并且此类方法适用于所有控制器。@ControllerAdvice 注解是一个组件注解,允许通过类路径扫描自动检测实现类。

在你的情况下,我想它看起来像:

@ControllerAdvice
public class GlobalControllerAdvice {

    @ModelAttribute("loginModel")
    public LoginDTO loginModel() {
        return new LoginDTO();
    }
}
于 2013-04-27T10:25:04.237 回答
0

你可以用你的 loginModel 制作抽象控制器,并为你想在其中使用登录表单的每个控制器扩展它,这个抽象控制器应该没有 @Controller,所有子类都必须包含 @Controller。

于 2013-04-27T10:14:18.127 回答