java如何使用常量输入多个@CrossOrigins?
在我的几个控制器上有一个@CrossOrigin
注释。我希望能够在某处设置一个static final
,并让所有人都引用它。比如:
public static final String[] ORIGINS = {"domain1","domain2"};
...
@CrossOrigin(origins = ORIGINS)
然而,我显然有一些语法错误
解决方案 对于那些有兴趣做同样事情的人,以下是我所做的:
@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@CrossOrigin(origins = {
"domain1",
"domain2"
})
@Controller
@interface CORSPermittedController {
}
这允许我用@CORSPermittedController
注释我的所有控制器
# 1 楼答案
不幸的是,Java语法无法做到这一点。属性值必须是编译常量(原语、
String
文本或这些类型的数组)但是您可以编写一个bean后处理器,它负责在运行时使用javassist将这个注释放到类上
# 2 楼答案
public static final String[]ORIGINS={“DOMAIN1”、“DOMAIN2”}
试试看,常量应该大写。它们之所以是常量,是因为您将它们声明为final。因此,它们必须资本化
如果这不管用,试试看
public static final String[]ORIGINS={“DOMAINONE”,“DOMAINTWO”}
或者
创建常量的另一种方法是
公共枚举源{DOMAIN1,DOMAIN2}