2012-01-18 71 views
0

我已經在stackoverflow中看到類似於我的許多問題,但沒有看到描述爲我的問題。所以,這裏是問題:GWT SimpleBeanEditorDriver - 生成編輯器類

我正在使用GXT構建相當龐大的Web應用程序。我需要製作幾百個帶有可編輯字段的窗口。我想要的是在運行時根據DataModel生成將生成Editor UI的生成器。但是我不明白這是如何實現的,因爲編輯器字段名稱必須與DataModel字段名稱匹配(也可以使用@Path註釋)。無論哪種方式知道這是不可能在運行時基於DataModel字段列表生成字段。編輯器類必須在編譯時建立。有沒有一種方法可以在運行時生成編輯器字段?

回答

0

這將需要至少模型被識別,但是像這樣的東西會爲您建立一個模型的基本UI。

public void BuildUI(TargetFieldMapping model) { 
     //Generate a factory for this model to cover to BeanModel 
     BeanModelFactory curFactory = BeanModelLookup.get().getFactory(model.getClass()); 

     //Create a bean from this model 
     BeanModel bean = curFactory.createModel(model); 

     //Loop through the properties 
     for(String s : bean.getPropertyNames()) { 
      //Get value 
      Object obj = bean.get(s); 

      //for each data type generate a different field type 
      if(obj instanceof Integer) { 
       NumberField field = new NumberField(); 
       field.setName(s); 
       field.setFieldLabel(s); 
       add(field); 
      } 
      //Etc etc... 
     } 
} 

希望這可以讓你在正確的軌道

+0

忘了提,我使用GXT 3.0上。沒有更多的BeanModelFactory。此外,我發現所有編輯器都必須在編譯時構建,因爲GWT SimpleBeanEditorDriver使用反射來編譯工作的js代碼。所以我想這是不可能在運行時建立編輯器視圖。相反,人們必須在編譯時生成能夠產生編輯器視圖的生成器。 – raivis 2012-01-23 06:14:06