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

JSF Java Discussion :

Duplicate Ids


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Par défaut Duplicate Ids
    Bonjour ,

    Ni Winston Praskash (Sun Woodstock team) ni le RichFaces forum n'ont de solution à ce probleme.
    Je galère avec ca depuis des mois, et aujourd'hui ca me bloque completement. J'ai vraiment besoin d'aide.

    J'ai des composants (majorité RichFaces) qui sont initialement placés dans un JSP.
    Dans la methode @PostConstruct de mon backing bean (request scope) , je change le parent de certains composants en utilisant findComponent et oldParent.getChildren().remove(component) et newParent.getChildren().add(component).

    Le probleme est le suivant:
    - si je ne mets pas le composant component à Transient apres ce processus de changement de parent, j'ai des erreurs DuplicateId
    - si je mets le composant component à Transient , je n'ai plus d'erreur Duplicate Id MAIS je n'arrive plus à sauvegarder les données dans la base de données

    Merci inifniment par avance de me donner quelques tuyaux ou pistes à étudier car je suis à cours d'idées et ca commence à etre plus qu'urgent
    Sincèrement

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Bonjour et bienvenue,

    Pourrais-tu nous expliquer pour quelle raison tu changes la hierarchie des composants JSF dans l'arbre des composants ?
    Quel en est l'intérêt au juste ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Par défaut
    Bonjour,

    Mon application est la version full web d'un ERP déjà commercialisé.
    Cet ERP est lie à un SGBD qui contient la position et le type des differents composants de chaque fiche/subview.

    Cet ERP, et c'est ce qui fait son interet sur le marche, est completement adaptable par le client a ses propres besoins. Il est WYSIWYG. Par exemple, sur la fiche "Contact", notre client peut ajouter jusqu'a 28 champs qui (chacun) peuvent prendre la forme de champ Texte, liste deroulante, calendar,....
    ex de configuration du champ1 en pièce jointe

    Il peut également déplacer tous les champs de la fiche (meme ceux existants par defaut: nom, prenom, adresse,...) d'un group à un autre, d'un onglet à un autre, etc...


    Vu que cet ERP est customisable, et que je ne connais pas l'allure des fiches qu'ils vont pondre, je mets tous les composants (avec leur differentes formes, sans style et avec un parent par defaut) dans mon fichiers JSP.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:inputText id="complement1_0" value="#{ContactFicheBean.contact.complement1}" ><a4j:support event="onchange" ajaxSingle="true" oncomplete="enableSave();"/></h:inputText>
    <h:selectBooleanCheckbox id="complement1_1" onclick="enableSave();" value="#{ContactFicheBean.contact.complement1Boolean}" ><a4j:support event="onchange" ajaxSingle="true" oncomplete="enableSave();"/></h:selectBooleanCheckbox>
    <rich:calendar enableManualInput="true" popup="true" style="width:200px" zindex="2000" datePattern="#{SessionBean.datePattern}" id="complement1_2" value="#{ContactFicheBean.contact.complement1}" ><a4j:support event="oninputchange" ajaxSingle="true" oncomplete="enableSave();"/><a4j:support event="onchanged" ajaxSingle="true" oncomplete="enableSave();"/></rich:calendar>
    <rich:comboBox enableManualInput="true" directInputSuggestions="true" selectFirstOnUpdate="true" id="complement1_3" value="#{ContactFicheBean.contact.complement1}" suggestionValues="#{ContactFicheBean.complement1Values}"><a4j:support event="onchange" ajaxSingle="true" oncomplete="enableSave();"/><a4j:support event="onselect" ajaxSingle="true" oncomplete="enableSave();"/></rich:comboBox>
    <h:inputText id="complement1_4" value="#{ContactFicheBean.contact.complement1}" ><a4j:support event="onchange" ajaxSingle="true" oncomplete="enableSave();"/></h:inputText><rich:suggestionbox for="complement1_4" suggestionAction="#{ContactFicheBean.complement1Suggest}" var="result"  nothingLabel="#{msgs.nothing_msg}"  height="200" width="320" eventsQueue="Queue"><h:column><h:outputText value="#{result.champ1}"/></h:column><h:column><h:outputText value="#{result.champ2}"/></h:column> </rich:suggestionbox>
    <h:inputText id="complement1_5" value="#{ContactFicheBean.contact.complement1}" ><a4j:support event="onchange" ajaxSingle="true" oncomplete="enableSave();"/></h:inputText>
    Ensuite dans le PostConstruct de mon request bean, je vais cher les infos de la BDD et set le style, le rendered et change le parent (si nécesssaire) de tous les composants dynamiquement.
    ex de changement de parent:
    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
     
    String oldParentId = movedComponent.getParent().getId();
    if (!newParentId.equals(oldParentId)) {
        LogUtil.log(this.getClass(),oldParentId);
        UIComponent oldParentComponent = movedComponent.getParent();
        UIComponent newParentComponent = ComponentUtil.findComponentInRoot(newParentId);
     
        LogUtil.log(this.getClass(),newParentComponent.getChildren());
        LogUtil.log(this.getClass(),oldParentComponent.getChildren());
        if (newParentComponent != null && oldParentComponent != null) {
            oldParentComponent.getChildren().remove(movedComponent);
    //        movedComponent.setParent(null);
            UIComponent foundComponentInNew = ComponentUtil.findComponent(newParentComponent, movedComponent.getId());
            if (foundComponentInNew==null){
                newParentComponent.getChildren().add(movedComponent);
            }
     
        }  
        //movedComponent.saveState(FacesContext.getCurrentInstance());
        movedComponent.setTransient(true);
    }


    Voila la raison.
    Je souhaiterais savoir comment faire sans avoir les erreurs citées plus haut.
    Comme tu peux le voir, j'essaie différentes choses: forcer le parent à null (interdit normalement), processSaveState à chaque composant, saveState à chaque composant mais rien n'y fait.
    Ca marche nickel au premier rendu et des qu'il y a un rerender de la page via Ajax Request BOOM duplicate ID (si transient n'est pas forcé).
    Et je le repète, si composant avec setTransient(true) ==> pas de duplicate ID mais impossible de sauvegarder les valeurs (seulement des composants qui ont changé de parent).

    C'est un probleme assez delicat et je ne peux pas passer outre ce fonctionnel.

    Merci de votre aide ou vos propositions
    Images attachées Images attachées   

Discussions similaires

  1. Duplication objet
    Par John Fullspeed dans le forum Composants VCL
    Réponses: 7
    Dernier message: 11/09/2004, 23h00
  2. #1062 - Duplicate entry
    Par Spaccio dans le forum Débuter
    Réponses: 6
    Dernier message: 02/06/2004, 11h18
  3. Message 'Duplicate index entry'
    Par Poulou dans le forum Administration
    Réponses: 13
    Dernier message: 04/05/2004, 14h57
  4. [INTERBASE]Fonction UDF et Duplication ???
    Par Sitting Bull dans le forum InterBase
    Réponses: 6
    Dernier message: 15/12/2003, 08h40
  5. [jsp] Error #: 482 : duplicate definition of class
    Par antigone dans le forum JBuilder
    Réponses: 4
    Dernier message: 24/07/2003, 10h18

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