ExtGWT-GXT, как я могу определить класс, который расширяется от BaseModel? - PullRequest
0 голосов
/ 11 сентября 2010

Я прочитал некоторые учебные пособия, документацию, но я не знаю, как определить класс, который расширяется от BaseModel или ModelData? В частности, я не знаю, как назвать методы получения и установки и значения внутри метода. Есть ли соглашение по коду? Пример:

public void setName(String value) {
    set("name", value);  //why is it "name"? does it relate to a attribute of Data Object?
}

public String getName() {
    return get("name");
}

В «Разработка приложений с помощью ExtGWT» они сказали: «ModelData позволяет виджету опрашивать объекты данных, не имея конкретной поддержки для какого-либо конкретного типа данных, обеспечивая отделение от модели и представления».

Могу ли я сделать вывод, что вместо создания экземпляра вроде:

Foo foo = new Foo (); foo.getName ();

Я могу вызвать "getName ()"?

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Вот что я обычно делаю, когда кодирую кодекс, расширяющий ModelData. По сути, вызов set () или get () просто обращается к хэш-карте. Это позволяет вашему объекту данных иметь свойства со свободным типом для доступа во время выполнения «типа отражения». Таким образом, вы можете передать любую строку в качестве первого параметра, и это будет определять имя свойства.

Я использую статические финальные строки, чтобы упростить обслуживание объекта.

Вы также можете связать геттеры и сеттеры, если вы хотите разделить слои WRT ваших объектов данных, но это может затруднить привязку типов GXT.

public class MockModel extends BeanModel implements ModelData {
private static final long serialVersionUID = -5276682038816452567L;

public static final String ID = "ID";
public static final String NAME = "NAME";
public static final String DESCRIPTION = "DESCRIPTION";
public static final String FIELD1 = "FIELD1";
public static final String FIELD2 = "FIELD2";
public static final String FUNCTION1 = "FUNCTION1";
public static final String FUNCTION2 = "FUNCTION2";

public MockModel(int id, String name, String desc, int f1, int f2) {
    set(ID,id);
    set(NAME,name);
    set(DESCRIPTION,desc);
    set(FIELD1,f1);
    set(FIELD2,f2);
    set(FUNCTION1, 0);
    set(FUNCTION2, 0);
}

}

0 голосов
/ 17 сентября 2010

Здесь наш класс, который расширяет BaseModel

import com.extjs.gxt.ui.client.data.BaseModel;

public class Order extends BaseModel {

 private static final long serialVersionUID = 1L;

 /**
  * Default constructor
  */
 public Order() {
  super();
 }

 public Order(Integer lieferungID) {
  this();

  setLieferungID(lieferungID); 
 }

 public void setLieferungID(int lieferungID) {
  set("lieferungID", lieferungID);
 }

 public Integer getLieferungID() {
  return get("lieferungID");
 }
}

Я использую этот класс для заполнения страниц и простых таблиц данными, и он отлично работает. Ваш геттер и сеттер выглядят хорошо ...

...