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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mai 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2009
    Messages : 40
    Points : 37
    Points
    37
    Par défaut Leonardi 4.2 à 4.4 Changement de comportement pour la méthode addExtraValues?
    Je suis passé de Leonardi 4.2 à 4.4.

    J'avais changé le comportement d'une classe avec mon propre bout de code. Tout fonctionnait parafaitement en 4.2.

    La méthode en cause:
    public void addExtraValues(LySetController set, LyValueSet values)

    En 4.2, si j'ajoute une valeur ici, alors elle apparait dans le formulaire (web ou lourd) et toutes les validations se font correctement. Donc, tout est OK.

    En 4.4, les calculs se font correctement dans mon log. Donc, les valeurs sont "ajoutées". Mais elles ne sont plus affichées dans les formulaires et les validations se plantent (genre valeur NULL pas acceptée!). J'ai ajouté une ligne à la fin de la méthode: set.resetFormContent(); Ça change rien. Toujours le même problème, soit en formulaire ou dans un "edit table".

  2. #2
    Nouveau membre du Club
    Inscrit en
    décembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : décembre 2009
    Messages : 36
    Points : 30
    Points
    30
    Par défaut
    Tu peux poster le bout de code que l'on puisse voir, avec la partie de ton model xml que l'on puisse voir ce qui va pas?
    Merci

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mai 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2009
    Messages : 40
    Points : 37
    Points
    37
    Par défaut
    J'ai résolu mon problème d'une manière assez simple: je réinitialise l'attribut dans le formulaire... Ce n'était pas nécessaire en 4.2.


    Bout de code en question, basé sur un exemple de Studio:

    public void addExtraValues(LySetController set, LyValueSet values)
    {

    // Add project number
    /*LyClassInfo classInfo = set.getClassInfo();
    LyFieldInfo projectClient = classInfo.getFieldInfo("projectClient");
    LyObjectId clientId = (LyObjectId)set.getValue(projectClient);
    LyObject client = clientId.getLogicalObject();
    LyObjectList projects = client.getList(set.getSession(),classInfo);
    int np = (projects == null ? 0 : projects.getSize());
    LyFieldInfo projectNumber = classInfo.getFieldInfo("projectNumber");
    String number;
    np++;
    if (np < 10)
    number = "P0" + np;
    else
    number = "P" + np;
    values.addValue(projectNumber, number);
    */
    if (set == null)
    return;
    if (values == null)
    return;

    LyClassInfo objectClassInfo=set.getClassInfo();
    int i, n = objectClassInfo.getFieldInfoCount();
    for (i = 0; i < n; i++)
    { //we always add extra values, but id's are for CreateController only
    if (objectClassInfo.getFieldInfo(i).getData("BSADDEXTRAVALUES") != null && !(objectClassInfo.getFieldInfo(i).MARK_ID == LyFieldInfo.MARK_ID && !set.isCreation()) )
    {
    values.addValue(objectClassInfo.getFieldInfo(i), getBeanShellEval(set, objectClassInfo.getFieldInfo(i), "BSADDEXTRAVALUES"));
    set.setFieldValue(objectClassInfo.getFieldInfo(i), getBeanShellEval(set, objectClassInfo.getFieldInfo(i), "BSADDEXTRAVALUES"), true);
    //propagate (set, objectClassInfo.getFieldInfo(i),getBeanShellEval(set, objectClassInfo.getFieldInfo(i), "BSADDEXTRAVALUES"));
    //set.resetFormContent(); //2010/02/05
    }
    }
    super.addExtraValues(set, values);
    }


    Pour votre information, j'ai intégré BeanShell comme interpréteur de commande Java dans les comportements de classe. Je n'ai qu'à ajouter des variables applicatives dans Studio (ici BSADDEXTRAVALUES avec une formule). Ça permet des formules plus sophistiquées que Studio et qui sont applicables sur tout les types d'attributs (ex: date du jour + 30, tester une relation, devient optionel si X > Y etc.). J'ai donc des BSISOPTIONAL, BSDEFAULT, BSCHECKNEWVALUE etc. Ca évite de coder les bouts de code simple. Un analyste qui a des bases de Java peut être relativement indépendant des programmeurs et de l'API de Leonardi... C'est encore en prototype mais les résultats sont prometteurs. La clé est de bien initialisé l'interpréteur BeanShell avec l'ensemble des attributs d'une classe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vertex shader : changement de comportement selon le .fx
    Par faucheuse dans le forum DirectX
    Réponses: 11
    Dernier message: 17/06/2010, 15h44
  2. Réponses: 3
    Dernier message: 12/04/2010, 16h55
  3. Réponses: 0
    Dernier message: 31/03/2010, 13h05
  4. Réponses: 8
    Dernier message: 10/11/2008, 09h35
  5. Changement de comportement SAMBA après MAJ
    Par Guig74 dans le forum Réseau
    Réponses: 1
    Dernier message: 07/07/2008, 12h50

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