2012-07-19 19 views
12

Estoy usando el controlador de reposo de muelles.@RequestParam defaultvalue no acepta el valor enum como valor predeterminado

Aquí está el código.

@RequestParam(value = "status", required = false, defaultValue = StatusEnum.STATUS.toString()) 

si uso como una enumeración defaultValue estoy consiguiendo el valor para la anotación atribuyen RequestParam.defaultValue debe ser una expresión constante.

Según mi entender, debe aceptar enum como valor predeterminado.

Por favor consejo.

+4

Una llamada de método no es una "expresión constante". – vanza

+0

¿Puedes por favor elaborar? –

+0

Una "expresión constante" es algo que se puede resolver en tiempo de compilación. Como un campo final estático, una cuerda o un número. – vanza

Respuesta

15

Como tiene que ser una cadena, y tiene que ser una expresión constante, la única opción real aquí es usar el valor que funcionará para Enum.valueOf(), ya que así es como finalmente se resuelve.

En concreto, la suya debe leer

@RequestParam(value = "status", required = false, defaultValue = "STATUS") 

Suponiendo, por supuesto, que "ESTADO" es el valor de cadena para StatusEnum.STATUS.

+0

Else puede usar StatusEnum.STATUS.name() – Dineshmohan

+2

@ user2344797 solo se permiten expresiones constantes. –

Cuestiones relacionadas