2012-07-08 67 views
1

我有一個Grails應用程序,它爲域模型使用了持久性註釋的POJO。 Grails按預期從它們生成控制器和視圖,但是一個類對我來說是一個難題。如何在POJO中表示要在Grails視圖中顯示爲select的集合

我需要表示一個字符串集合(此時是一個字符串ArrayList),它是grails-view'friendly',並將呈現爲一個下拉列表。

ArrayList中的數據是'相當'不變的,所以我認爲枚舉可以用於它,但我只是不確定。

有問題的類:

/** 
* available categories: 
*  Airplane 
*  Rotorcraft 
*  Glider 
*  Lighter than air 
*  Powered lift 
*  Powered parachute 
*  Weight-shift-control 
*/ 
@Entity 
public class AircraftCategory { 

    public AircraftCategory(){ 

    this.aircraftCategories.add("Airplane"); 
    this.aircraftCategories.add("Rotorcraft"); 
    this.aircraftCategories.add("Glider"); 
    this.aircraftCategories.add("Lighter Than Air"); 
    this.aircraftCategories.add("Powered Lift"); 
    this.aircraftCategories.add("Powered Parachute"); 
    this.aircraftCategories.add("Weight Shift Control"); 
    } 

    long id; 
    private long version; 
    private ArrayList <String> aircraftCategories = new ArrayList<String>(); 

    public ArrayList <String> getAircraftCategories() { 
     return aircraftCategories; 
    } 

    public void setAircraftCategories(ArrayList <String> aircraftCategories) { 
     this.aircraftCategories = aircraftCategories; 

    } 

    @Id 
    @GeneratedValue 
    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    }  

    public long getVersion() { 
     return version; 
    } 

    public void setVersion(long version) { 
     this.version = version; 
    } 
} 

回答

1

做最簡單的事情就是推到DB這是一個「正確」的域對象。有一個基本上只是一個名稱字段的對象有點傻,但它會按照您希望在腳手架視圖中呈現(假設您與您的實際對象有關聯)。

另外一個好處是,如果您需要向AircraftCategory添加更多數據(例如縮寫),那麼稍後在應用程序中有一個簡單的擴展點。

對於另一種可能的解決方案,this question非常相似。

+0

...確實好點,我正在考慮這兩個問題,但挑戰依然存在;-) – vector 2012-07-09 17:56:25

+0

我會大量遊說讓'AircraftCategory'成爲一個實際的域類,因爲它不會在類別中硬編碼,而是使它們成爲數據。如果需要,您可以引導類別。 – cdeszaq 2012-07-09 18:00:00

+0

...是的,我的情緒正是如此。 – vector 2012-07-09 18:29:11