2016-11-22 38 views
1

私はコントローラのいくつかに@CrossOrigin注釈を持っています。 static finalをどこかに設定して、それらのすべてを参照できるようにしたいと思います。何かのように:定数を使用して複数の@CrossOriginsを入力するにはどうすればよいですか?

public static final String[] ORIGINS = {"domain1","domain2"}; 
... 
@CrossOrigin(origins = ORIGINS) 

しかし、私は明らかにいくつかの構文をオフにしています。

ソリューション同じことをやってに興味がある人のために 、ここで私がやったことだ:私は残念ながら@CORSPermittedController

答えて

2

ですべての私のコントローラに注釈を付けることができます

@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE}) 
@Retention(RetentionPolicy.RUNTIME) 
@CrossOrigin(origins = { 
     "domain1", 
     "domain2" 
}) 
@Controller 
@interface CORSPermittedController { 
} 

を、あなたは「できますJavaの構文でそれを行う。属性値はコンパイル定数(プリミティブ、Stringリテラル、またはこれらの型の配列)でなければなりません。

しかし、javassistを使って、実行時にクラスにこの注釈を付けるBeanポストプロセッサを書くことができます。

+0

右です!それが私が欠けていた部分でした。実際には、 'javassist'を使うのではなく、Springのメタアノテーションを使って独自のアノテーションを作成する方が良い方法です。それはまた、「1か所でそれを変える」目標を達成する。 –

-1

public static final String [] ORIGINS = {"DOMAIN1"、 "DOMAIN2"};

これを試すと、定数を大文字にする必要があります。それらが定数である理由は、あなたがそれらをfinalとして宣言しているからです。だから、彼らは大文字にする必要があります。

ことが試す動作しない場合

のpublic static final String []型ORIGINS = { "DOMAINONE"、 "DOMAINTWO"}。

OR

あなたは、定数を作成することができる他の方法は、

パブリック列挙起源{DOMAIN1、DOMAIN2}

+0

申し訳ありませんが、これは意味をなさない。そしてそれは質問に答えない。 – zeroflagL

関連する問題