2013-10-08 4 views
0

J'ai Grails 2.0.4 app, je nouvelle classe de domaine comme ci-dessous, qui contient environ 50 propriétésComment sauver objet dans Grails

class Test{ 
    int testField1 
    int testField2 
    int testField2 
    . 
    . 
    int testFieldN 
} 

Et je veux faire comme suit,

Display Value   Value to Save in DB 

'Excellent'    10 
'Good'     8 
'Average'    6 
'Poor'     4 
'Pathetic'    2 

J'ai un formulaire html qui contient toutes ces propriétés.

Si la valeur testField1 est une de la valeur de « valeur d'affichage » la valeur à enregistrer sera la valeur correspondante figurant dans « Valeur à enregistrer dans DB »

Par exemple Si la valeur testField1 est « Excellent 'alors la valeur à enregistrer est 10.

Cette correspondance particulière s'applique à environ 30 propriétés dans la classe de domaine. Comme ceci j'ai différentes mappings pour différentes propriétés.

Comment réaliser ceci dans les grails.

Répondre

2

Je suggère d'utiliser des énumérations.

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

Mais mieux ENUM d'être utilisé comme un type de propriété

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 
    .... 
} 

puis GSP

<g:select name='testField1' from="${Test.Scales}"/>