2012-03-07 15 views
11

Biorąc pod uwagę klasę zawierającą ENUM:Jak mogę odwołać się do typu zagnieżdżonego w 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; 
     } 
    } 
} 

jak mogę odwołać NestedEnum? To:

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

skutkuje wyłączeniem:

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

to:

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

Skutkuje wyjątkiem:

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

Nie mogę myśleć o jakichkolwiek innych dobrych opcji próbować.

Odpowiedz

18

Trzeba oddzielić enum przy użyciu $ znak:

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

Byłoby lepiej, aby określić 'Type'->' NestedEnum' zmiany w swojej odpowiedzi, zamiast tego? Często błędny kod w pytaniach powinien być pozostawiony sam, tak aby poprawka w odpowiedzi mogła być bardziej oczywista. – sarnold

+0

Byłoby to również rozwiązanie, ale zakładam, że pogorszyłoby to zrozumiałość odpowiedzi. Zakładam też, że był to błąd kopiuj i wklej pytającego. Mimo to, dziękuję za twoją podpowiedź. – micfra

Powiązane problemy