2012-03-07 43 views
11

Cho một lớp có chứa một enum:Làm cách nào để tham chiếu một loại lồng nhau trong Spel?

public class MyClass { 
    public enum NestedEnum {   
     value1(1), 
     value2(2); 

     private int code; 

     private NestedEnum(int code) { 
      this.code = code; 
     } 

     public int getCode() { 
      return code; 
     } 
    } 
} 

làm thế nào để tôi tham khảo NestedEnum? Đây:

#{T(MyClass.NestedEnum).value1.getCode()} 

kết quả trong ngoại lệ:

org.springframework.expression.spel.SpelEvaluationException: EL1005E:(pos 0): Type cannot be found 'namespace.MyClass.NestedEnum' 

này:

#{T(T(MyClass).NestedEnum).value1.getCode()} 

kết quả trong ngoại lệ:

org.springframework.expression.spel.SpelParseException: EL1043E:(pos 3): Unexpected token. Expected 'rparen())' but was 'lparen(()' 

Tôi không thể nghĩ ra bất kỳ tùy chọn tốt khác thử.

Trả lời

18

Bạn cần phải tách các enum sử dụng một dấu $:

#{T(MyClass$NestedEnum).value1.getCode()} 
+1

Nó sẽ được tốt hơn để xác định 'Type'-> 'thay đổi NestedEnum' trong câu trả lời của bạn, để thay thế? Thông thường 'sai' mã trong câu hỏi nên được để lại một mình, để sửa chữa trong một câu trả lời có thể được rõ ràng hơn. – sarnold

+0

Đây cũng là một giải pháp, nhưng tôi cho rằng nó sẽ làm giảm khả năng hiểu được câu trả lời. Tôi cũng giả định, đó là một lỗi sao chép và dán của người hỏi.Neverteheless, cảm ơn gợi ý của bạn. – micfra

Các vấn đề liên quan