Как сохранить объект в граале

У меня есть приложение Grails 2.0.4, у меня есть новый класс домена, как показано ниже, который содержит около 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 является любое из значений "Display Value", то сохраняемым значением будет соответствующее значение, указанное в "Value to Save in DB".

Например, если значение testField1 равно "Отлично", то значение для сохранения равно 10.

Это конкретное сопоставление применяется к около 30 свойствам в доменном классе.

Как это у меня есть разные сопоставления для разных свойств.

Как этого добиться в Граале.

1 ответ

Я предлагаю использовать перечисления.

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}"/>
Другие вопросы по тегам