2013-06-05 24 views
3

我有枚舉集映射枚舉春天的形式以不同的方式選擇

public enum MyEnum { 

    A("AND"), // 
    I("INTER"); 
} 

我有春天的形式:選擇當我想要的填充AND和INTER我的jsp頁面,但在提交它拋出異常的形式,不能將String AND映射到枚舉類型Status。

我的控制器:

model.addAttribute("list",MyEnum.values); 

**

但是,當我修改我的枚舉,並添加更多的價值一樣, OR( 「或」)它的工作原理,現在如果我選擇OR從UI,它被正確地保存在 database.But它不會爲工作或一

**

注意:對這個問題的投票只是意味着你沒有仔細閱讀問題。我已經在stackoverflow上搜索。 :)

+0

@PaulVargas:讓我確認一樣 – Chetan

+0

是什麼異常呢? – msangel

+0

@msangel:無法映射到MyEnum,但它適用於修改我的枚舉並現在增加一個值,如OR(「ÖR」)如果我從UI中選擇OR,它會正確保存在數據庫中。但它不適用於A或I. – Chetan

回答

5

謝謝所有回答,但我找到了方法,如何處理這個。

<form:options items="${mList}" itemLabel="name" /> 

使用Spring形式以下方式不指定項目值字段選項,春天會爲你做它。 :)

+1

ENUM的name屬性是私人的,你是如何得到它的org.springframework.beans.NotReadablePropertyException:bean類的名稱無效[xxx.users.Role]:Bean屬性'name'不可讀或具有無效的getter方法:getter的返回類型是否與參數類型的設置?' – xedo

2

我想當春季轉換您的枚舉選擇選項時,它使用枚舉toString方法並且您忽略它,因此它返回「AND」爲A和「INTER」爲I。當它將所選選項轉換回枚舉時,它可能使用valueOf,但我不確定。
無論如何,你應該嘗試爲這個字段實現你自己的格式化程序,它將把枚舉轉換爲字符串並返回到枚舉正確。檢查這篇文章:http://bthurley.wordpress.com/2012/10/25/enum-translations-in-spring-mvc/

+0

這個文件不包含我想要的東西:( – Chetan