Spring:为@ModelAttribute创建元注释

时间:2016-06-27 14:01:58

标签: java spring spring-mvc

我有很多带有此代码的控制器:

@RequestMapping("/test1")
public String test (@ModelAttribute("page") Page page) {
...
}

@RequestMapping("/test2")
public String test2 (@ModelAttribute("page") Page page) {
...
}

是否可以在Spring(4.3)中创建一个缩短此注释的Meta-Annotation,如下所示:

@RequestMapping("/test3")
public String test2 (@MyCustom Page page) {
...
}

所以@ModelAttribute(“page”)将成为@MyCustom?

2 个答案:

答案 0 :(得分:1)

不幸的是,这不起作用。 As you can see in the sourcesModelAttribute已注明

@Target({ElementType.PARAMETER, ElementType.METHOD})

which means it can be applied to methods and method parameters only。对于元注释,它必须在类型级别上应用。

有关详细信息,请参阅Spring Annotation Programming Model,但基本上这是边缘情况,其中Meta注释不起作用。

答案 1 :(得分:0)

我想我找到了一个优雅的解决方案: 我们使用“HandlerMethodArgumentResolver”来检查“Page”类型的Arguments。如果我们找到了一个,我们就会从模型中得到它,就是这样。

这导致了这个:

@RequestMapping("/test3")
public String test2 (Page page) {
...
}