Как сохранить объект в граале
У меня есть приложение 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}"/>