2013-10-08 38 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}"/>