我有很多带有此代码的控制器:
@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?
答案 0 :(得分:1)
不幸的是,这不起作用。 As you can see in the sources,ModelAttribute
已注明
@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) {
...
}