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 :

[Composite-component] Autocomplete + link


Sujet :

JSF Java

  1. #1
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut [Composite-component] Autocomplete + link
    Bonjour,

    J'aimerais faire un composite component composé dans champ autocomplete permettant de sélectionner un bean de mon système et d'un link permettant d'ouvrir un explorateur windows avec un chemin spécifié dans mon bean.

    Ca fonctionne pas trop mal sauf que :

    - l'attribut disabled de mon autocomplete prend une valeur fournie en paramètre (readOnly) : le problème est que cette valeur peut charger et je ne vois comment faire pour la transmettre à nouveau
    - une fois qu'un bean a été sélectionné, la méthode completeMandat() de mon composant n'est plus appelée et il n'est plus possible de sélectionner un autre bean
    - il faut mettre à jour des champs de la page utilisatrice quand la valeur du champs modifiée

    Voici mon composant :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <html xmlns="http://www.w3.org/1999/xhtml"
    		xmlns:h="http://java.sun.com/jsf/html"
    		xmlns:f="http://java.sun.com/jsf/core"
    		xmlns:p="http://primefaces.org/ui"
    		xmlns:composite="http://xmlns.jcp.org/jsf/composite">
     
    		<composite:interface componentType="mandatSelectionComponent">
    			<composite:attribute name="value" required="true" type="ch.application.beans.mandat.Mandat" />
    			<composite:attribute name="readOnly" default="false" type="java.lang.Boolean" />
    		</composite:interface>
     
    		<composite:implementation>
    			<p:panelGrid styleClass="ui-panelgrid-blank tableNoBorder">
    				<p:row>
    					<p:column>
    						<p:autoComplete id="key" binding="#{cc.key}"
    								disabled="#{cc.attrs.readOnly}"
    								completeMethod="#{cc.completeMandat}"
    								var="mandat" itemLabel="#{mandat.numero}" minQueryLength="3" queryDelay="500"
    								itemValue="#{mandat}" converter="MandatConverter"
    								forceSelection="false" placeholder="@#{msg['Mandat']}">
    							<p:ajax event="itemSelect" listener="#{cc.updateValue}" update="btn"/>
    							<p:ajax event="itemUnselect" listener="#{cc.updateValue}" update="btn"/>
    							<p:ajax event="change" listener="#{cc.updateValue}" update="btn"/>
    							<p:column>
    								<p:outputLabel value="#{mandat.numero}"/>
    							</p:column>
    							<p:column>
    								<p:outputLabel value="#{mandat.listMandatIdentiteToString}"/>
    							</p:column>
    							<p:column>
    								<p:outputLabel value="#{mandat.objet}"/>
    							</p:column>
    						</p:autoComplete>
    					</p:column>
     
    					<p:column>
    						<p:link id="btn" target="_blank" href="#{cc.attrs.value.cheminServeurConverti}" disabled="#{cc.attrs.value eq null or cc.attrs.value.cheminServeur eq null}">
    							<p:tooltip for="btn" value="#{msg['OuvrirLeMandatSurLeServeur']}"/>
    							<i class="fa fa-folder-open"></i>
    						</p:link>
    					</p:column>
    				</p:row>
    			</p:panelGrid>
    		</composite:implementation>
     
    		<composite:interface>
    			<composite:attribute name="value"></composite:attribute>
    			<composite:attribute name="readOnly"></composite:attribute>
    		</composite:interface>
    		<composite:interface>
    			<composite:attribute name="value"></composite:attribute>
    			<composite:attribute name="readOnly"></composite:attribute>
    		</composite:interface>
    </html>
    L'appel de mon composant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <my_cc:cmpMandatSelector id="cmpMandat" value="#{gestionFactDebiteursProvisoireForm.mandat}"
    	readOnly="#{gestionFactDebiteursProvisoireForm.selectedFacture eq null or gestionFactDebiteursProvisoireForm.selectedFacture.factureDebiteur ne null}"/>
    La classe abstraite de mes composants :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    public abstract class AbstractBeanSelectionComponent extends UIInput implements NamingContainer {
        public final Logger logger = Logger.getLogger(getClass().getSimpleName());
        protected UIInput key;
     
        public abstract void formatValue();
        public abstract void updateValue(AjaxBehaviorEvent event);
     
     
        @Override
        public String getFamily() {
            return UINamingContainer.COMPONENT_FAMILY;
        }
     
        /**
         * Début de l'encodage du composant
         */
        @Override
        public void encodeBegin(FacesContext facesContext) throws IOException {
            logger.log(Level.FINEST, "encodeBegin(FacesContext)");
            formatValue();
            super.encodeBegin(facesContext);
        }
     
     
        /**
         * Envoyer un message d'application
         * @param target
         * @param message
         */
        public void sendFacesMessage(String target, FacesMessage message) {
            if (message != null) {
                FacesContext facesContext = FacesContext.getCurrentInstance();
                facesContext.getExternalContext().getFlash().setKeepMessages(true);
                facesContext.addMessage(target, message);
            }
        }
     
        /**
         * Validation (si nécessaire)
         */
        @Override
        public void validate(FacesContext facesContext) {
            logger.log(Level.FINEST, "validate(FacesContext)");
     
            /*
             * On traite tous les validators enregistrés
             */
            for (Validator validator : getValidators()) {
                try {
                    validator.validate(facesContext, this, getValue());
                } catch (ValidatorException e) {
                    invalidValue();
                    sendFacesMessage(null, e.getFacesMessage());
                }
            }
        }
     
        /**
         * Valeur incorrecte
         */
        public void invalidValue() {
            logger.log(Level.FINEST, "invalidValue()");
            if (getKey().getValue() != null) {
                setValid(false);
                key.setValid(false);
            }
        }
     
        public UIInput getKey() {
    		return key;
    	}
     
        public void setKey(UIInput key) {
    		this.key = key;
    	}
     
    }
    Et la classe du composant en question :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    @FacesComponent("mandatSelectionComponent")
    public class MandatSelectionComponent extends AbstractBeanSelectionComponent {
     
    	@EJB
    	private MandatService m_mandatService;
     
        /**
         * La valeur change, mise à jour des composants
         * @param event
         */
        @Override
    	public void updateValue(AjaxBehaviorEvent event) {
            try {
                logger.log(Level.FINEST, "updateValue(AjaxBehaviorEvent) ");
                if (event instanceof SelectEvent) {
                    Mandat mandat = (Mandat) ((SelectEvent) event).getObject();
                    setValue(mandat);
                    RequestContext.getCurrentInstance().execute("callChangeFunction('" + key.getClientId() + "')");
                } else {
                    if (key.getValue() != null && key.getValue().toString().trim().length() > 0)
                    {
                        String keyValue = (String) key.getValue();
                        Mandat mandat = m_mandatService.getMandat(keyValue);
                        setValue(mandat);
                    } else {
                        super.setValue(null);
                        updateModel(FacesContext.getCurrentInstance());
                        formatValue();
                    }
                }
            }
            catch (Exception e) {
            	logger.log(Level.SEVERE, e.toString());
            }
        }
     
     
        /**
         * Formattage de la valeur
         */
        @Override
    	public void formatValue() {
            Mandat mandat = null;
            if (getValue() instanceof Mandat) {
            	mandat = (Mandat)getValue();
            }
     
            if (mandat != null) {
                key.setValue(mandat.getNumero());
            } else {
                key.setValue(null);
            }
     
        }
     
        public List<Mandat> completeMandat(String query) {
        	String texte = query.startsWith("*") ? "" : query;
     
    		return m_mandatService.getMandatList(texte, true);
        }
    }
    Qqun peut-il m'aider à résoudre ces 2 problèmes ?

    merci pour votre aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tiens, j'ai un disciple

    Pour répondre à ta question, si les paramètres du composant changent, il faut faire un update du composant.
    Dans ton cas, comme tu implémentes NamingContainer, le composant n'a pas spécifiquement d'id (cmpMandat) matérialisé dans la page.
    Tu peux le rajouter comme ceci, ça devrait fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ...
    
    <composite:implementation>
    
       <div id="#{cc.clientId}>
    
          // Ton code actuel
    
       </div>
    
    
    </composite:implementation>
    ...
    Ensuite, quand tu veux changer l'attribut, tu utilises l'attribut update="cmpMandat" ou par code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RequestContext.getCurrentInstance().update("id_à_modifier");
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Hé oui, d'ailleurs je me suis inspiré de ton tuto ;-)

    Merci pour ta réponse, ça marche :-)

    Tu as une idée pour les 2 autres soucis par hasard ?

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par doons Voir le message
    Hé oui, d'ailleurs je me suis inspiré de ton tuto ;-)
    Oui, j'avais reconnu mon code... tant mieux si ça sert

    Pour ton problème de completeMethode qui n'est plus appelée, je ne vois pas trop... je regarderais le converter, peut-être provoque-t-il une erreur.
    As-tu listé les phases du cycle JSF ?
    J'utilise un "PhaseListener" pour vérifier, le code est le suivant
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    import java.util.Map;
    import javax.faces.event.PhaseEvent;
    import javax.faces.event.PhaseId;
    import javax.faces.event.PhaseListener;
     
    /**
     * Cycle de vie d'une requête JSF
     * @author Olivier BUTTERLIN
     */
    public class LifeCycleListener implements PhaseListener
    {
        public static final long serialVersionUID = 1;
     
        public LifeCycleListener()
        {
            super();
        }
     
        public PhaseId getPhaseId()
        {
            return PhaseId.ANY_PHASE;
        }
     
        /**
         * Au début d'une phase
         * @author Olivier BUTTERLIN
         */
        public void beforePhase(PhaseEvent event)
        {
            if (event.getPhaseId() == PhaseId.RESTORE_VIEW)
            {
                System.out.println(event.getPhaseId() + " --> " + event.getFacesContext().getExternalContext().getRequestServletPath());
            }
            else if (event.getPhaseId() == PhaseId.APPLY_REQUEST_VALUES)
            {
                Map<String, String> map = event.getFacesContext().getExternalContext().getRequestParameterMap();
                if (!map.isEmpty())
                {
                    StringBuilder sb = new StringBuilder();
                    for (String key : map.keySet())
                    {
                        sb.append("      ").append(key).append(" = \"").append(map.get(key).replaceAll("\r", "").replaceAll("\n", "\\\\n")).append("\"\n");
                    }
                    sb.delete(sb.length()-1, sb.length());
                    System.out.println(event.getPhaseId() + " -->\n" + sb.toString());
                }
            }
            else
            {
                System.out.println(event.getPhaseId());
            }
        }
     
        /**
         * A la fin d'une phase
         * @author Olivier BUTTERLIN
         */
        public void afterPhase(PhaseEvent event)
        {
    //        System.out.println("\n");
        }
    }
    Ensuite, tu le références dans le faces-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        <lifecycle>
            <phase-listener>le.package.LifeCycleListener</phase-listener> 
        </lifecycle>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Merci pour ta réponse.

    J'ai mis le listener et voici ce qu'il en ressort au moment ou je sélectionne un bean dans l'autocomplete (une fois sélectionné, plus rien ne vient dans la console):
    2017-02-20T15:23:49.060+0100|Infos: 2017-02-20 15:23:49,059 [http-listener-1(4),] INFO ch.erpapplication.listener.LifeCycleListener - RESTORE_VIEW 1 --> /secured/chefprojet/facturation/debiteur/gestionFactureDebiteurProvisoire.xhtml
    2017-02-20T15:23:49.204+0100|Infos: 2017-02-20 15:23:49,204 [http-listener-1(4),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:49.205+0100|Infos: 2017-02-20 15:23:49,204 [http-listener-1(4),] INFO ch.erpapplication.listener.LifeCycleListener - APPLY_REQUEST_VALUES 2 -->
    javax.faces.partial.ajax = "true"
    javax.faces.source = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key"
    javax.faces.partial.execute = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key"
    javax.faces.partial.render = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key_query = "125"
    gestionFactDebiteursProvisoireForm = "gestionFactDebiteursProvisoireForm"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key_input = "125"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key_hinput = "125"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandatMo_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpMandatMo_input = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpSocieteLieu_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpSocieteLieu_input = "1"
    gestionFactDebiteursProvisoireForm:accordion:cmpDomaineActivite_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpDomaineActivite_input = "Domaine d'activité"
    gestionFactDebiteursProvisoireForm:accordion:cmpMontantHt = "0.00"
    gestionFactDebiteursProvisoireForm:accordion:cmpTrimestre_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpTrimestre_input = "98"
    gestionFactDebiteursProvisoireForm:accordion:cmpPapierEntete_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpPapierEntete_input = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpRemarque = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpSousTraitantsTable_scrollState = "0,0"
    gestionFactDebiteursProvisoireForm:accordion:cmpFichiersAnnexesTable_scrollState = "0,0"
    gestionFactDebiteursProvisoireForm:accordion_active = "0"
    javax.faces.ViewState = "-421923565810598119:725651750299504246"
    2017-02-20T15:23:49.274+0100|Infos: 2017-02-20 15:23:49,274 [http-listener-1(4),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:49.274+0100|Infos: 2017-02-20 15:23:49,274 [http-listener-1(4),] INFO ch.erpapplication.listener.LifeCycleListener - RENDER_RESPONSE 6
    2017-02-20T15:23:49.291+0100|Infos: 2017-02-20 15:23:49,291 [http-listener-1(4),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:49.993+0100|Infos: 2017-02-20 15:23:49,992 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener - RESTORE_VIEW 1 --> /secured/chefprojet/facturation/debiteur/gestionFactureDebiteurProvisoire.xhtml
    2017-02-20T15:23:50.228+0100|Infos: 2017-02-20 15:23:50,228 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:50.229+0100|Infos: 2017-02-20 15:23:50,228 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener - APPLY_REQUEST_VALUES 2 -->
    javax.faces.partial.ajax = "true"
    javax.faces.source = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key"
    javax.faces.partial.execute = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key"
    javax.faces.partial.render = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:btn"
    javax.faces.behavior.event = "change"
    javax.faces.partial.event = "change"
    gestionFactDebiteursProvisoireForm = "gestionFactDebiteursProvisoireForm"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key_input = "125"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key_hinput = "125"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandatMo_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpMandatMo_input = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpSocieteLieu_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpSocieteLieu_input = "1"
    gestionFactDebiteursProvisoireForm:accordion:cmpDomaineActivite_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpDomaineActivite_input = "Domaine d'activité"
    gestionFactDebiteursProvisoireForm:accordion:cmpMontantHt = "0.00"
    gestionFactDebiteursProvisoireForm:accordion:cmpTrimestre_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpTrimestre_input = "98"
    gestionFactDebiteursProvisoireForm:accordion:cmpPapierEntete_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpPapierEntete_input = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpRemarque = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpSousTraitantsTable_scrollState = "0,0"
    gestionFactDebiteursProvisoireForm:accordion:cmpFichiersAnnexesTable_scrollState = "0,0"
    gestionFactDebiteursProvisoireForm:accordion_active = "0"
    javax.faces.ViewState = "-421923565810598119:725651750299504246"
    2017-02-20T15:23:50.229+0100|Infos: 2017-02-20 15:23:50,229 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:50.230+0100|Infos: 2017-02-20 15:23:50,230 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener - PROCESS_VALIDATIONS 3
    2017-02-20T15:23:50.237+0100|Infos: 2017-02-20 15:23:50,237 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:50.237+0100|Infos: 2017-02-20 15:23:50,237 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener - UPDATE_MODEL_VALUES 4
    2017-02-20T15:23:50.238+0100|Infos: 2017-02-20 15:23:50,238 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:50.238+0100|Infos: 2017-02-20 15:23:50,238 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener - INVOKE_APPLICATION 5
    2017-02-20T15:23:50.238+0100|Infos: 2017-02-20 15:23:50,238 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:50.238+0100|Infos: 2017-02-20 15:23:50,238 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener - RENDER_RESPONSE 6
    2017-02-20T15:23:50.248+0100|Infos: 2017-02-20 15:23:50,248 [http-listener-1(2),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:53.106+0100|Infos: 2017-02-20 15:23:53,105 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener - RESTORE_VIEW 1 --> /secured/chefprojet/facturation/debiteur/gestionFactureDebiteurProvisoire.xhtml
    2017-02-20T15:23:53.307+0100|Infos: 2017-02-20 15:23:53,307 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:53.307+0100|Infos: 2017-02-20 15:23:53,307 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener - APPLY_REQUEST_VALUES 2 -->
    javax.faces.partial.ajax = "true"
    javax.faces.source = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key"
    javax.faces.partial.execute = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key"
    javax.faces.partial.render = "gestionFactDebiteursProvisoireForm:accordion:cmpMandat:btn"
    javax.faces.behavior.event = "itemSelect"
    javax.faces.partial.event = "itemSelect"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key_itemSelect = "5823"
    gestionFactDebiteursProvisoireForm = "gestionFactDebiteursProvisoireForm"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key_input = "MD125"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandat:key_hinput = "5823"
    gestionFactDebiteursProvisoireForm:accordion:cmpMandatMo_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpMandatMo_input = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpSocieteLieu_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpSocieteLieu_input = "1"
    gestionFactDebiteursProvisoireForm:accordion:cmpDomaineActivite_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpDomaineActivite_input = "Domaine d'activité"
    gestionFactDebiteursProvisoireForm:accordion:cmpMontantHt = "0.00"
    gestionFactDebiteursProvisoireForm:accordion:cmpTrimestre_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpTrimestre_input = "98"
    gestionFactDebiteursProvisoireForm:accordion:cmpPapierEntete_focus = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpPapierEntete_input = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpRemarque = ""
    gestionFactDebiteursProvisoireForm:accordion:cmpSousTraitantsTable_scrollState = "0,0"
    gestionFactDebiteursProvisoireForm:accordion:cmpFichiersAnnexesTable_scrollState = "0,0"
    gestionFactDebiteursProvisoireForm:accordion_active = "0"
    javax.faces.ViewState = "-421923565810598119:725651750299504246"
    2017-02-20T15:23:53.314+0100|Infos: 2017-02-20 15:23:53,314 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:53.315+0100|Infos: 2017-02-20 15:23:53,314 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener - PROCESS_VALIDATIONS 3
    2017-02-20T15:23:53.324+0100|Infos: 2017-02-20 15:23:53,324 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:53.324+0100|Infos: 2017-02-20 15:23:53,324 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener - UPDATE_MODEL_VALUES 4
    2017-02-20T15:23:53.325+0100|Infos: 2017-02-20 15:23:53,325 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:53.325+0100|Infos: 2017-02-20 15:23:53,325 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener - INVOKE_APPLICATION 5
    2017-02-20T15:23:53.326+0100|Infos: 2017-02-20 15:23:53,326 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener -
    2017-02-20T15:23:53.326+0100|Infos: 2017-02-20 15:23:53,326 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener - RENDER_RESPONSE 6
    2017-02-20T15:23:53.341+0100|Infos: 2017-02-20 15:23:53,340 [http-listener-1(3),] INFO ch.erpapplication.listener.LifeCycleListener -
    Par contre, pas d'erreurs dans le converter.

    Et en fait, je viens de remarquer qu'il n'y a pas que la méthode complete() qui n'est plus appelée.
    J'ai également le bouton pour enregistrer et celui pour annuler qui ne répondent plus non plus.
    C'est comme si j'avais perdu la connexion au serveur... par contre le menu permettant de changer de page fonctionne bien

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu as vu que tu as mis 3x le bloc <composite:interface> ? Il y en a 2 après le bloc <composite:implementation> et en plus, il n'y a pas la classe du composent...
    Peux-tu les supprimer et tester ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/02/2012, 14h03
  2. Réponses: 0
    Dernier message: 06/02/2012, 14h32
  3. [Flex builder3] rendering de "composite components"
    Par Jacques - 06 dans le forum MXML
    Réponses: 2
    Dernier message: 07/05/2008, 08h21

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