2012-01-18 10 views
0

私はstackoverflowで鉱山に似た多くの質問を見たことがあるが、私のような問題は見られていない。だからここに質問があります:GWT SimpleBeanEditorDriver - エディタクラスを生成する

私はGXTを使って非常に巨大なWebアプリケーションを構築しています。編集可能なフィールドを持つ数百のウィンドウを作成する必要があります。私が望むのは、実行時にDataModelに応じてエディタUIを生成するジェネレータを作ることです。しかし、エディタのフィールド名がDataModelのフィールド名と一致しなければならないので、これをどのように行うことができないのか分かりません(@Path注釈も同様に使用できます)。いずれにしても、実行時にDataModelフィールドリストに基づいてフィールドを生成することはできません。 Editorクラスはコンパイル時にビルドする必要があります。実行時にエディタフィールドを生成する方法はありますか?

答えて

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

関連する問題