我的几个控制器上都有@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
答案 0 :(得分:2)
不幸的是,你不能用Java语法做到这一点。属性值必须是编译常量(原始,String
文字或这些类型的数组)。
但是你可以编写一个bean后处理器,负责使用javassist在运行时将这个注释放在类上。
答案 1 :(得分:-1)
public static final String [] ORIGINS = {" DOMAIN1"," DOMAIN2"};
试试这个,常量应该大写。它们之所以成为常数,是因为你将它们宣布为最终版。所以,他们必须大写。
如果这不起作用,请尝试
public static final String [] ORIGINS = {" DOMAINONE"," DOMAINTWO"};
OR
您可以创建常量的另一种方法是
public enum Origins {DOMAIN1,DOMAIN2}