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 値が「表示値」の値のいずれかである場合、保存される値は、「DB に保存する値」にリストされている対応する値になります。

たとえば、testField1 の値が「Excellent」の場合、保存される値は 10です。

この特定のマッピングは、ドメイン クラスの約 30 のプロパティに適用されます。

このように、プロパティごとに異なるマッピングがあります。

grails でこれを達成する方法。

4

1 に答える 1

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}"/>
于 2013-10-08T07:04:45.147 に答える