2012-06-01 62 views
0

我有一個域類:如何映射整數(數據庫)轉換成字符串(在視圖中)

class MyUser { 

.. 

int sex 
int qualification 
int occupation 

.. 
} 

假設我要約束這些整數類別,例如:

occupation : [0:"not occupied", 1:"architect", 2:"student", 3:"policeman" and so on..] 

我想要在數據庫上有整數值,並在我的視圖上顯示整數的字符串表示形式(這種行爲是否可以自動搭建?)。

有沒有辦法以grails方式快速執行此操作?

謝謝!

+0

爲什麼你想使用地圖,而不是一個類來表示的職業是什麼? –

回答

0

我建議使用一個對象來表示,像這樣的職業...

class MyUser { 
... 
    int sex 
    int qualification 
    Occupation occupation 
... 
} 

那麼你的職業等級是這樣的......

class Occupation { 
    ... 
    String name 
    ... 
} 

然而,如果你堅持在使用枚舉類型你可以做這樣的事情...

public enum Occupation { 
     GEEK(0, 'Geek'), 
     NERD(1, 'Nerd'), 

     final int id; 
     final String name; 

     Occupation (int id, String name) { 
      this.id = id; 
      this.name = name; 
     } 
    } 

您MYUSER類會喜歡這樣......

class MyUser { 
    ... 
     int sex 
     int qualification 
     int occupation 
    ... 
    } 

你GSP想這樣的事情...

<g:select name="occupation" id="occupation" 
         from="${Occupation.values()}" 
         value="${fieldValue(bean: user, field: 'occupation')}" 
         optionKey="id" 
         optionValue="name"/> 

這是未經測試,但應該工作。請享用。

+0

是的,這是正確的;但是對於性:我是否也應該爲一個班級建模?我認爲最好是在數據庫上有一個整數直接數據庫(出於性能的原因),並在視圖上顯示MALE或FEMALE .. – Giuseppe

+0

這個級別的性能不是問題,您的思考方式遠非如此。緩存將關注很多您的性能問題,並且映射實際上可能會變慢,因爲它可能不受緩存控制。在他們出現問題時處理性能問題。 –

+0

好的,非常感謝! – Giuseppe

0

,如果你願意,你可以使用地圖也並通過它通過控制器來查看....