有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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注释我的所有控制器


共 (2) 个答案

  1. # 1 楼答案

    不幸的是,Java语法无法做到这一点。属性值必须是编译常量(原语、String文本或这些类型的数组)

    但是您可以编写一个bean后处理器,它负责在运行时使用javassist将这个注释放到类上

  2. # 2 楼答案

    public static final String[]ORIGINS={“DOMAIN1”、“DOMAIN2”}

    试试看,常量应该大写。它们之所以是常量,是因为您将它们声明为final。因此,它们必须资本化

    如果这不管用,试试看

    public static final String[]ORIGINS={“DOMAINONE”,“DOMAINTWO”}

    或者

    创建常量的另一种方法是

    公共枚举源{DOMAIN1,DOMAIN2}