2012-03-07 15 views
11

dado una clase que contiene una enumeración:¿Cómo hago referencia a un tipo anidado en 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; 
     } 
    } 
} 

¿Cómo me refiero NestedEnum? Este:

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

resultados en la excepción:

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

esto:

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

da lugar a la excepción:

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

no puedo pensar en otras buenas opciones intentar.

Respuesta

18

Hay que separar la enumeración utilizando un signo $:

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

¿Sería mejor para especificar el 'Type'->' cambio NestedEnum' en su respuesta, en su lugar? A menudo, el código 'incorrecto' en las preguntas debe dejarse en paz, de modo que la solución en una respuesta puede ser más obvia. – sarnold

+0

Esto también habría sido una solución, pero supongo que habría perjudicado la comprensibilidad de la respuesta. También supongo que fue un error de copiar y pegar del que pregunta. Sin embargo, gracias por su pista. – micfra

Cuestiones relacionadas