我使用Spring Security 3.1.0.RC3,因爲在3.1中引入了具有枚舉權限的方法的可能性。Eclipse編譯器說,屬性未定義的情況下,在枚舉字段數組的情況下
這裏是我的註解:
public @interface SecuredEnum
{
public PrivilegeEnum[] value();
}
這裏是我如何使用它:
import static somepath1.PrivilegeEnum.SOME_PRIV1;
public interface MyService extends BaseService {
@SecuredEnum(SOME_PRIV1)
void insertOrUpdateMyObject(MyObject myObject);
}
的javac編譯此代碼正確的每一次,但是Eclipse(靛藍SR1)編譯器會發出後一個錯誤項目 - >清潔:
The attribute value is undefined for the annotation type SecuredEnum
,並建議速戰速決:
Create attribute 'value()'
因此,這裏是我的解決方法:正確
public @interface SecuredEnum
{
// public PrivilegeEnum[] value();
public PrivilegeEnum value();
}
之後日食編譯所有類(除了那些@SecuredEnum有兩個:我應用此修復程序,並在註釋註釋掉陣列場或更多特權)。下一步是取消註釋舊數組字段並刪除快速修復創建的新字段。因此,一切都完美編譯。 因此,每次清理項目時都很煩人。另一個問題是,我無法用示例項目重現此問題,因此可能存在此問題文本中缺少的重要信息。 這是誰的錯誤,以及如何修復它?
UPDATE: 既不在註釋參數使用顯式陣列(即加括號{}),也沒有定義的參數名稱(「值」)明確,也沒有使用完全合格的枚舉值,而不是靜態的進口有助於
其他的答案並沒有幫助我。只有解決方案爲我工作是從日食juno切換回日食靛藍。它解決了這個問題。 – sertug