如何在grails中保存对象

时间:2013-10-08 06:42:32

标签: grails grails-2.0.4

我有grails 2.0.4 app,我有新的域类,如下所示,其中包含大约50个属性

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值为'Excellent',则要保存的值为10

此特定映射适用于域类中的大约30个属性。

像这样,我对不同的属性有不同的映射。

如何在grails中实现这一目标。

1 个答案:

答案 0 :(得分: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"/>

但最好将enum用作一种属性

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}"/>