2013-10-08 39 views
0

我已經Grails的2.0.4應用程序,我有新的域類如下,其中包含約50種性質如何保存在Grails的對象

class Test{ 
    int testField1 
    int testField2 
    int testField2 
    . 
    . 
    int testFieldN 
} 

我想要做如下,

Display Value   Value to Save in DB 

'Excellent'    10 
'Good'     8 
'Average'    6 
'Poor'     4 
'Pathetic'    2 

我有一個包含所有這些屬性的html表單。

如果testField1值是任何「顯示值」,那麼要保存的值將是在所列的相應值「值保存在DB」

例如的值如果testField1值爲「極佳'那麼要保存的價值是10

此特定映射適用於域類中的大約30個屬性。

像這樣我對不同的屬性有不同的映射。

如何在grails中實現這一點。

回答

2

我建議使用枚舉。

class Test{ 
    enum Scales{ 
    Excellent(10), Good(8), Average(6), Poor(4), Pathetic(2) 
    private final int value 
    Scales(int v){ this.value = v} 
    int getValue(){ this.value} 
    } 

    int testField1 
    int testField2 
    int testField2 
    . 
    . 
    int testFieldN 
} 

GSP

<g:select name='testField1' from="${Test.Scales}" optionKey="value"/> 

但更好地利用枚舉作爲類型的財產

class Test{ 
    enum Scales{ 
    Excellent(10), Good(8), Average(6), Poor(4), Pathetic(2) 
    private final int value 
    Scales(int v){ this.value = v} 
    int getValue(){ this.value} 
    } 

    Scales testField1 
    .... 
} 

然後 GSP

<g:select name='testField1' from="${Test.Scales}"/>