IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

[SmartGwt] Fields cannot be added to a DataSource after the underlying component has been created


Sujet :

GWT et Vaadin Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 104
    Par défaut [SmartGwt] Fields cannot be added to a DataSource after the underlying component has been created
    Bonjour,

    En essayant de rendre ma datasource Rest dynamique afin de créer les colonnes (champs) suivant le contenu de cette DS, j'obtiens l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fields cannot be added to a DataSource after the underlying component has been created
    Voici le code de ma DataSource
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    public class ViewDataSource2 extends RestDataSource {
     
     
    	@Override  
        protected Object transformRequest(DSRequest dsRequest) {  
            return super.transformRequest(dsRequest);  
        }  
        @Override  
        protected void transformResponse(DSResponse response, DSRequest request, Object data) {
     
        	super.transformResponse(response, request, data);  
     
     	   String toto = XMLTools.selectString(data, "@name");
     
     	   toto = "pouet : " + toto;
     
     	 DataSourceTextField phoneField = new DataSourceTextField("name", "Phone");  
          phoneField.setValueXPath("@name");
          System.out.println("getFields : "  + getFields());
          ArrayList<DataSourceField> list = new ArrayList<DataSourceField>();
          for (int i = 0 ; i < getFields().length ;i++) {
        	  list.add(getFields()[i]);
          }      
          list.add(phoneField);
     
          setFields(list.toArray(new DataSourceField[list.size()]));
        }
    Voici le code de ma classe utilisant cette datasource
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ViewDataSource2 dataSource = new ViewDataSource2();	        	           
    dataSource.setDataFormat(DSDataFormat.XML);  
     
    dataSource.setRecordXPath("//wky:column");  
    dataSource.setDataURL("/helloworld/workeyapirestproxy?url=http://localhost:8080/workey-j2ee-api/View/1&login=test1&password=test");
     
     
                          final ListGrid countryGrid = new ListGrid();  
     
       		             countryGrid.setWidth100();  
       		             countryGrid.setHeight100();
       		             countryGrid.setDataSource(dataSource);
       		             countryGrid.setAutoFetchData(true);
                                 ....
    J'ai posté ça sur le forum de smartgwt mais je n'ai eu aucune réponse pour l'instant.

    A priori mon besoin d'avoir une datasource avec des champs dynamiques semble compliqué à réaliser ...

    J'ai tenté avec une définition directe de Record[] sur l'objet countryGrid ceci dit dans ce cas les filtres ne fonctionnent pas c'est pour celà que je me suis rabatu sur les datasource qui est la méthode recommandé mais qui semble assez inflexible pour la définition de colonnes dynamiques. Si vous avez la moindre solution je suis preneur

    Blured.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 213
    Par défaut
    je pense que tu devrais recréer ta datasource a chaque fois...ce qui fait un peu lourd je te l'accorde!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dataSource.destroy();
    dataSource.create();

  3. #3
    Invité de passage
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1
    Par défaut Même erreur
    Bonjour,

    J'utilise smartGWT et plus précisement une DataSource. J'utilise un tableau de string coté serveur qui est envoyé au client par communucation RPC et qui représente les noms de mes colonnes.
    Lorsque je lance mon application, l'erreur suivante m'est retournée :

    code:
    Error :Fields cannot be added to a DataSource after the underlying component has been created.

    mon code de création de mon datasource est le suivant:

    code:
    public class CreatingDataSource extends DataSource {

    private static CreatingDataSource instance = null;

    public static CreatingDataSource getInstance() {
    if (instance == null) {
    instance = new CreatingDataSource("essai");
    }
    return instance;
    }


    public CreatingDataSource(String id) {
    setID(id);
    RPC.Util.getInstance().getFieldsName(new AsyncCallback<String[]>(){
    public void onSuccess(String[] result) {
    DataSourceTextField dstf;
    for(String field:result){
    dstf = new DataSourceTextField(field);
    addField(dstf);
    }

    }


    public void onFailure(Throwable caught) {
    //System.out.println("Failed");
    Window.alert(caught.getMessage());

    }
    });

    setClientOnly(true);

    }
    }


    Si quelqu'un aurait une suggestion à me faire je suis preneur!
    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2015, 12h05
  2. Réponses: 8
    Dernier message: 11/04/2014, 09h44
  3. Réponses: 0
    Dernier message: 29/07/2012, 11h57
  4. Réponses: 0
    Dernier message: 29/07/2012, 11h57
  5. [JSP]Cannot forward after response has been committed
    Par hinanui dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 03/02/2007, 03h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo