GWT SimpleBeanEditorDriver - создать класс редактора - PullRequest
0 голосов
/ 18 января 2012

Я видел много вопросов в stackoverflow, которые похожи на мои, но не видели проблемы, описанной как моя.Итак, вот вопрос:

Я создаю довольно большое веб-приложение, используя GXT.Мне нужно сделать пару сотен окон с редактируемыми полями.Я хочу сделать генератор, который будет генерировать интерфейс редактора в соответствии с DataModel во время выполнения.Но я не понимаю, как это можно сделать, так как имена полей редактора должны совпадать с именами полей DataModel (аннотация @Path также может использоваться)В любом случае, зная это, невозможно создать поля на основе списка полей DataModel во время выполнения.Класс Editor должен быть собран во время компиляции.Есть ли способ, которым я мог бы генерировать поля редактора во время выполнения?

1 Ответ

0 голосов
/ 20 января 2012

Это потребует, по крайней мере, определения модели, но что-то вроде этого создаст базовый пользовательский интерфейс для вашей модели.

 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...
      }
}

Надеюсь, что вы попадете на правильный путь

...