2013-10-08 4 views
0

Я 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 Сохранить в БД»

Например Если значение testField1 является «Отлично 'тогда значение для сохранения будет 10.

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

Вроде бы у меня разные отображения для разных свойств.

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

ответ

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}"/> 
Смежные вопросы