2010-09-11 34 views
0

J'ai lu quelques tutoriels, documentations mais je ne sais pas comment définir une classe qui s'étend de BaseModel ou ModelData? Plus précisément, je ne sais pas comment nommer les méthodes getter et setter et les valeurs à l'intérieur de la méthode. Y a-t-il une convention de code? Exemple:ExtGWT- GXT, comment puis-je définir une classe qui s'étend de BaseModel?

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"); 
} 

Dans « Appress Développer avec ExtGWT » ils ont dit: « ModelData permet un widget pour interroger les objets de données sans avoir à avoir un appui en béton pour tout type particulier de données, en fournissant une séparation du modèle et vue".

pourrais-je en déduire que, au lieu de créer une instance comme:

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

Je peux appeler "getName()"?

Répondre

1

Voici ce que je fais normalement lorsque je code un pojo qui étend ModelData. En appelant essentiellement set() ou get(), vous accédez simplement à un hashmap. Cela permet à votre objet de données d'avoir des propriétés faiblement typées pour l'accès à l'exécution "type de réflexion". Donc, vous pouvez passer n'importe quelle chaîne comme premier paramètre et cela définira le nom de la propriété. J'utilise des chaînes finales statiques pour faciliter l'entretien de l'objet.

Vous pouvez également interfacer les getters et les setters si vous voulez séparer les calques WRT de vos objets de données mais cela pourrait rendre la liaison de type GXT plus difficile.

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

Voici notre classe, qui étend la 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"); 
} 
} 

J'utilise cette classe pour remplir une pagination et des grilles simples avec des données et il fonctionne parfaitement. Votre getter et setter est bon ...