2012-07-08 63 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