2012-07-19 157 views
12

我正在使用彈簧休息控制器。@RequestParam默認值不接受枚舉值作爲默認值

這是代碼。

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

如果我使用枚舉作爲默認值我得到用於註釋屬性的值RequestParam.defaultValue必須是一個常量表達式。

根據我的理解,它應該接受枚舉作爲默認值。

請指教。

+4

方法調用不是「常量表達式」。 – vanza 2012-07-19 06:13:10

+0

請您詳細說明一下嗎? – 2012-07-20 08:55:38

+0

「常量表達式」可以在編譯時解決。像靜態最終字段,字符串或數字一樣。 – vanza 2012-07-21 02:13:33

回答

15

因爲它必須是一個字符串,並且它必須是一個常量表達式,所以這裏唯一真正的選擇是使用對Enum.valueOf()有效的值,因爲這是最終解決的方法。

具體而言,你應該讀

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

假設,當然,前提是 「STATUS」 是用於StatusEnum.STATUS的字符串值。

+0

否則可以使用StatusEnum.STATUS.name() – Dineshmohan 2016-07-28 21:24:16

+2

@ user2344797只允許常量表達式。 – 2016-09-28 15:08:21