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 :

JSF1.2/RichFaces3.3.0GA: requête ne s'exécutant qu'une seule fois par session


Sujet :

JSF Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut JSF1.2/RichFaces3.3.0GA: requête ne s'exécutant qu'une seule fois par session
    Bonjour à tous et merci d'avance,

    Je travaille actuellement sur un mini-projet afin de me familiariser avec la technologie JSF1.2. Le projet consiste à créer un CRUD pour un annuaire simple (3 tables Personne/Equipe/Société).

    Tout d'abord j'utilise donc JSF1.2, facelets, richfaces3.3.0GA, ainsi que Spring et Hibernate.

    Maintenant le code:

    Je travaille sur une dataTable affichant une liste de personne en fournissant quelques infos directement dans la table. Le code qui suis correspond à un composant qui affiche donc la liste des personnes, et qui ouvre un menu contextuel quand on clique pour afficher une fiche détaillé/modifier/supprimer.

    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
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:a4j="http://richfaces.org/a4j"
    	xmlns:rich="http://richfaces.org/rich">
    	<h:form>
    		<!-- dataTable pour affichage de la liste des personnes -->
    		<rich:dataTable id="listePersonne" rows="15" value="#{liste}"
    			var="personne" width="300px" columnClasses="center"
    			reRender="sc1,sc2">
    			<!-- Entête du tableau -->
    			<f:facet name="header">
    				<h:panelGroup>
    					<h:outputText value="Liste des personnes" />
    					<rich:datascroller reRender="sc2" id="sc1" pageIndexVar="pageIndex"
    						pagesVar="pages" />
    				</h:panelGroup>
    			</f:facet>
    <!-- première colonne: Nom des Personnes -->
    			<rich:column sortBy="#{personne.nom}">
    				<f:facet name="header">
    					<h:outputText value="Nom" />
    				</f:facet>
    				<h:outputText value="#{personne.nom}" />
    			</rich:column>
     
    <!-- Suivi d autres données style prénom/nom d équipe/nom de l entreprise -->
     
    <!-- Pied du tableau incluant un scroller-->
    			<f:facet name="footer">
    				<rich:datascroller reRender="sc1" pageIndexVar="pageIndex"
    					pagesVar="pages" id="sc2" />
    			</f:facet>
    <!-- Controleur pour menu Contextuel -->
    			<rich:componentControl event="onRowClick" for="menu" operation="show">
    				<f:param value="#{personne.nom}" name="nom" />
    				<f:param value="#{personne.idPersonne}" name="id" />
    			</rich:componentControl>
    		</rich:dataTable>
     
    <!-- le menu contextuel -->
    		<rich:contextMenu attached="false" id="menu" >
    			<f:facet name="header">
    				<h:outputText value="{nom}" />
    			</f:facet>
    			<rich:menuItem action="fiche" ajaxSingle="true">
    				<a4j:actionparam name="personne_id" assignTo="#{AffichageBean.tbPersonneId}"
    		value="{id}" />
    				<h:outputText value="fiche" />
    			</rich:menuItem>
    			<rich:menuItem action="modifier">
    					<h:outputText value="modifier" />
    			</rich:menuItem>
    			<rich:menuItem action="supprimer">
    			<h:outputText value="supprimer" />
    			</rich:menuItem>
    		</rich:contextMenu>
    	</h:form>
    </ui:composition>
    Pour information: toute la partie DataTable fonctionne très bien, la liste s'affiche, les tris fonctionne bien, les scrollers aussi. Seule la première option du menu contextuel est active pour le moment, les autres sont là en prévision.
    Dans le menu contextuel, la "fiche" renvoi vers une autre page donnant plus de détails sur la personne. (fiche détaillée)

    Voilà mon problème est le suivant:
    Lorsque je vais cliquer la première fois sur la table et demander à voir une fiche, je suis bien envoyer vers la page, et la fiche apparait normalement.
    Mais si je demande à voir une autre fiche, j'ai toujours les informations de ma première fiche qui apparait.

    J'ai donc chercher la cause et je me suis aperçu que cette partie de code (situé dans le menu contextuel)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a4j:actionparam name="personne_id" 
    assignTo="#{AffichageBean.tbPersonneId}" value="{id}" />
    ne s'exécute que la première fois. (j'ai fait un simple print pour voir la valeur actuelle, et il ne s'affiche qu'une seule fois). En gros le setTBPersonneId n'est exécuter qu'une seule et unique fois. J'ai beau naviguer sur différentes pages, revenir sur la liste et sélectionner une autre personne, je reviens toujours sur la première ouverte.

    Pour info: le bean affichageBean est en scope "Session", il me sers à garder des variables autre entre différentes pages.

    Voilà, est ce que quelqu'un a une idée pour savoir d'où vient le problème?
    Si vous voulez d'autres parties de code, ne pas hésiter.

    Merci d'avance.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Lorsque tu clique sur une autre ligne, le menu s'affiche avec la bonne ligne (le bon nom)?

    ajoute un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:messages ajaxRendered="true"/>
    voir si tu n'a pas d'erreurs de validations ou de conversions.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Je viens de rajouter un {nom} dans l'un de mes <rich:menuItem> et c'est bien le bon nom qui apparait.

    Et aucun message d'erreur, que ce soit au niveau de la page de ma dataTable, aussi bien que sur la page d'arrivée (fiche descriptive).

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu fais comment pour retrouver tous les détails de ton objet?
    Il n'y a pas d'action dans le menu.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Pour récupérer l'objet, je passe par un autre bean "TbPersonneBean" qui va venir chercher la valeur de tbPersonneId dans "AffichageBean" (je sais, c'est un pneu compliqué). (sachant que TbPersonneBean a un scope "request").

    Je n'ai pas réussi à envoyer directement l'objet vers l'autre page (ce qui aurait été à la fois plus simple et plus propre) malgré différents essais. Ceci m'éviterai de devoir passer par l'AffichageBean.

    Edit: En fait, le TbPersonneBean est "lié" à ma table et me permet de remplir mes formulaires, etc. La page "fiche" va faire appel à mon bean TbPersonneBean, qui, au moment de s'initialiser, va chercher l'id dans AffichageBean. (je sais pas si c'est plus clair)

    Alors que AffichageBean me permet de gérer d'autres paramètres graphiques (page pour les scrollers) ou des paramètres devant être préserver plus longtemps qu'une requête.

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    et quand tu clique sur le menu la deuxième fois, qu'est ce qui se passe l'action?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Quand je cliques une seconde fois, je suis bien envoyer vers la seconde page, mais il n'y a pas de changement de valeur pour AffichageBean.tbEquipeId comme la première fois. (la méthode setTbEquipeId n'est pas exécuté). Je me retrouve donc sur la page de la première fiche chargée. (l'id stockée étant celle de la première fiche).

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    en debug, tu passe bien par ta méthode qui change le bean?
    tu peux montrer son code?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Je vais te donner les 2 bean (juste les fonctions qui nous intéresse).

    TbPersonneBean
    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
    import java.util.Collection;
     
    import proto.jsf12.bean.affichage.AffichageBean;
    import proto.jsf12.modele.TbPersonne;
    import proto.jsf12.service.*;
     
    public class TbPersonneBean {
    	private String tbPersonneId;
    	@SuppressWarnings("unchecked")
    	private Collection tbPersonnes;
    	private TbPersonne tbPersonne;
    	private TbPersonne selectPersonne;
    	private TbPersonneService tbPersonneService;
    	private TbInstitutService tbInstitutService;
    	private TbEquipeService tbEquipeService;
    	private AffichageBean affichageBean;
    	private String idInstitutCrea;
    	private String idEquipeCrea;
     
    	/**
             * Constructor
             */
     
    	public TbPersonneBean() {
    		super();
    		tbPersonne = new TbPersonne();
    	}
     
    	/**
             * @return Return the tbPersonne.
             */
     
    	public TbPersonne getTbPersonne() {
    		System.out.println("Au niveau du PersonneBean au chargement "+affichageBean.getTbPersonneId());
    		if(affichageBean.getTbPersonneId()!=null){
    			tbPersonne = tbPersonneService.getTbPersonne(new Integer(affichageBean.getTbPersonneId()));
    		}
    		return tbPersonne;
    	}
    Le reste de la classe, c'est simplement des setter/getter pour chaque élément.

    Ensuite AffichageBean

    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
    public class AffichageBean {
    	private String tbEquipeId;
    	private String tbInstitutId;
    	private String tbPersonneId;
    	private String pageScrollerEquipe;
    	private String pageScrollerPersonne;
    	private String pageScrollerInstitut;
     
            public AffichageBean() {
    		super();
    	}
     
            public void setTbPersonneId(String tbPersonneId) {
    		System.out.println("actuellement tbPersonneId: " +this.tbPersonneId);
    		System.out.println("actuellement envoyé par la page: " +tbPersonneId);
    		if (tbPersonneId.equals("null")) {
    			this.tbPersonneId = null;
    		} else {
    			this.tbPersonneId = tbPersonneId;
    		}
    	}
    }
    Se rajoute les setter/getter pour les autres attributs.

    Au niveau de la sortie, j'obtiens lors du premier clic et affichage de la première fiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Hibernate: select this_.id_personne as id1_0_0_, this_.fk_institut_travail as fk2_0_0_, this_.fk_equipe as fk3_0_0_, this_.nom as nom0_0_, this_.prenom as prenom0_0_, this_.mail as mail0_0_, this_.tel as tel0_0_, this_.actif as actif0_0_, this_.commentaire as commenta9_0_0_, this_.date_maj as date10_0_0_, this_.date_creation as date11_0_0_, this_.fk_responsable as fk12_0_0_ from public.tb_personne this_
    actuellement tbPersonneId: null
    actuellement envoyé par la page: 17
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Hibernate: select tbinstitut0_.id_institut as id1_1_0_, tbinstitut0_.institut as institut1_0_, tbinstitut0_.adresse as adresse1_0_, tbinstitut0_.code_postal as code4_1_0_, tbinstitut0_.ville as ville1_0_, tbinstitut0_.actif as actif1_0_, tbinstitut0_.date_maj as date7_1_0_, tbinstitut0_.date_creation as date8_1_0_ from public.tb_institut tbinstitut0_ where tbinstitut0_.id_institut=?
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Hibernate: select tbequipe0_.id_equipe as id1_2_0_, tbequipe0_.fk_institut as fk2_2_0_, tbequipe0_.equipe as equipe2_0_, tbequipe0_.tutelle as tutelle2_0_, tbequipe0_.result_group as result5_2_0_, tbequipe0_.actif as actif2_0_, tbequipe0_.date_maj as date7_2_0_, tbequipe0_.date_creation as date8_2_0_ from public.tb_equipe tbequipe0_ where tbequipe0_.id_equipe=?
    Et lorsque je reviens sur la liste et demande une autre fiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Hibernate: select this_.id_personne as id1_0_0_, this_.fk_institut_travail as fk2_0_0_, this_.fk_equipe as fk3_0_0_, this_.nom as nom0_0_, this_.prenom as prenom0_0_, this_.mail as mail0_0_, this_.tel as tel0_0_, this_.actif as actif0_0_, this_.commentaire as commenta9_0_0_, this_.date_maj as date10_0_0_, this_.date_creation as date11_0_0_, this_.fk_responsable as fk12_0_0_ from public.tb_personne this_
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Hibernate: select tbinstitut0_.id_institut as id1_1_0_, tbinstitut0_.institut as institut1_0_, tbinstitut0_.adresse as adresse1_0_, tbinstitut0_.code_postal as code4_1_0_, tbinstitut0_.ville as ville1_0_, tbinstitut0_.actif as actif1_0_, tbinstitut0_.date_maj as date7_1_0_, tbinstitut0_.date_creation as date8_1_0_ from public.tb_institut tbinstitut0_ where tbinstitut0_.id_institut=?
    Au niveau du PersonneBean au chargement 17
    Au niveau du PersonneBean au chargement 17
    Hibernate: select tbequipe0_.id_equipe as id1_2_0_, tbequipe0_.fk_institut as fk2_2_0_, tbequipe0_.equipe as equipe2_0_, tbequipe0_.tutelle as tutelle2_0_, tbequipe0_.result_group as result5_2_0_, tbequipe0_.actif as actif2_0_, tbequipe0_.date_maj as date7_2_0_, tbequipe0_.date_creation as date8_2_0_ from public.tb_equipe tbequipe0_ where tbequipe0_.id_equipe=?
    On voit que lors du premier appel, il n'y a pas le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    actuellement tbPersonneId: null
    actuellement envoyé par la page: 17
    présent dans le setTbPersonneId qui est absent lors du second appel

  10. #10
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Il vaut mieux calculer l'objet sélectionné dans une action, dans le menu ou dans l'actionListener, tu le fais dans le constructeur, ce n'est pas facile à gérer avec les beans session/request..

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    et dans ce cas je le stock au niveau de mon AffichageBean non?

    ou bien je peux le calculer et l'envoyer dans le TbPersonneBean, même si son scope est "request"?

    (ma logique voudrait que ce soit le premier cas, mais j'avoue que je me perds facilement avec ces histoires de scope).

    Je vais faire comme tu me l'indiques. Et je tiens au courant de ce que ca donne.


    Ce qui m'étonne vraiment est que le setter ne se lance qu'une seule fois. Et pas seulement au niveau de la dataTable/menu contextuel.
    J'ai un menu avec un lien vers une page de creation de personne.
    Cette page fonctionnant avec le TbPersonneBean pour le traitement du formulaire (lien avec la couche service=>DAO), j'ai du aussi indiquer dans le menu de mettre le AffichageBean.tbPersonneId a null (sinon il récup l'objet et je me retrouve avec un formulaire pré-rempli).

    Et dans ce cas, je me retrouve avec le même problème, car seul le premier appel est appliqué (que ce soit dans le tableau ou dans le menu).

    J'espère être clair.

    Merci beaucoup pour l'aide.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Re bonjour,

    mon problème persiste et signe! Je me suis apercu que le problème est plus global.

    J'ai voulu tester un exemple de la demo richface pour vérifier quelques choses.

    Celui-ci qui consiste à afficher un choix selon un clic utilisateur.

    Et il se produit le même phénomène que pour le cas de mon apply.

    Au premier clic, j'ai bien le nom Alex ou Jhon qui apparait, comme dans l'exemple.
    Mais au second clic, le nom disparait.

    Code des différents éléments:
    Code page : 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
     
    <h:form>
    <rich:panel bodyClass="rich-laguna-panel-no-header">
    	<a4j:commandButton value="Set Name to Alex" reRender="rep">
    		<a4j:actionparam name="username" value="Alex"
    			assignTo="#{TestFonctionBean.test}" />
    	</a4j:commandButton>
    	<rich:spacer width="20" />
    	<a4j:commandButton value="Set Name to John" reRender="rep">
    		<a4j:actionparam name="username" value="John"
    			assignTo="#{TestFonctionBean.test}" />
    	</a4j:commandButton>
    </rich:panel>
    <rich:spacer height="1" />
    <rich:panel bodyClass="rich-laguna-panel-no-header">
    	<h:outputText id="rep" value="Selected Name:#{TestFonctionBean.test}" />
    </rich:panel>
    <a4j:log popup="false" level="ALL" style="width: 800px; height: 300px;"></a4j:log>
    </h:form>

    Code TestFonctionBean : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package proto.jsf12.bean.form;
     
    public class TestFonctionBean {
     
    	private String test;
     
    	public TestFonctionBean() {super();}
     
    	public String getTest() {return test;}
     
    	public void setTest(String test) {
    		System.out.println(test);
    		this.test = test;
    	}
    }

    et le face-config
    Code faces-config.xml : 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
    <?xml version="1.0"?>
     
    <!DOCTYPE faces-config PUBLIC
      "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
      "http://java.sun.com/dtd/web-facesconfig_1_1.dtd" >
     
    <faces-config>
    	<application>
    		<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    	</application>
    	<application>
    		<variable-resolver>
    			org.springframework.web.jsf.DelegatingVariableResolver
           </variable-resolver>
    		<locale-config />
    	</application>
    	<managed-bean>
    		<managed-bean-name>TestFonctionBean</managed-bean-name>
    		<managed-bean-class>proto.jsf12.bean.form.TestFonctionBean</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
    </faces-config>

    Et les traces affichées:

    Code debug_premier clic : 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
    debug[17:39:33,887]: Have Event [object Object] with properties: target: [object HTMLInputElement], srcElement: undefined, type: click
    debug[17:39:33,888]: Query preparation for form 'j_id43' requested
    debug[17:39:33,889]: Append hidden control j_id43_SUBMIT with value [1] and value attribute [1]
    debug[17:39:33,889]: Append hidden control autoScroll with value [] and value attribute [null]
    debug[17:39:33,889]: Append hidden control javax.faces.ViewState with value [8EgC7hvJoXWgMHaUZxk5rx66APlnNueyP32ajDxbvc/i5akMf2jX5XKw5x7aUn7zH+8/ImgwBMkDgTTdpZOHZ3P40TrkERSZMn1lLi26b5BNXvFOzaTyMQ==] and value attribute [8EgC7hvJoXWgMHaUZxk5rx66APlnNueyP32ajDxbvc/i5akMf2jX5XKw5x7aUn7zH+8/ImgwBMkDgTTdpZOHZ3P40TrkERSZMn1lLi26b5BNXvFOzaTyMQ==]
    debug[17:39:33,890]: parameter username with value Alex
    debug[17:39:33,890]: parameter j_id43:j_id73 with value j_id43:j_id73
    debug[17:39:33,890]: Look up queue with default name
    debug[17:39:33,891]: NEW AJAX REQUEST !!! with form: j_id43
    debug[17:39:33,891]: Start XmlHttpRequest
    debug[17:39:33,892]: Reqest state : 1
    debug[17:39:33,892]: QueryString: AJAXREQUEST=_viewRoot&j_id43_SUBMIT=1&autoScroll=&javax.faces.ViewState=8EgC7hvJoXWgMHaUZxk5rx66APlnNueyP32ajDxbvc%2Fi5akMf2jX5XKw5x7aUn7zH%2B8%2FImgwBMkDgTTdpZOHZ3P40TrkERSZMn1lLi26b5BNXvFOzaTyMQ%3D%3D&username=Alex&j_id43%3Aj_id73=j_id43%3Aj_id73&
    debug[17:39:33,893]: Reqest state : 1
    debug[17:39:34,104]: Reqest state : 2
    debug[17:39:34,104]: Reqest state : 3
    debug[17:39:34,105]: Reqest state : 4
    debug[17:39:34,105]: Reqest end with state 4
    debug[17:39:34,105]: Response with content-type: text/xml; charset=UTF-8
    debug[17:39:34,105]: Full response content: <?xml version="1.0"?> <html xmlns="http://www.w3.org/1999/xhtml"><head><title></title><link class="component" href="/jsf12/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/basic_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><link class="component" href="/jsf12/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/extended_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" media="rich-extended-skinning" rel="stylesheet" type="text/css" /><link class="component" href="/jsf12/a4j/s/3_3_0.GAcss/toolBar.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><script src="/jsf12/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.PrototypeScript.jsf" type="text/javascript"> </script><script src="/jsf12/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.AjaxScript.jsf" type="text/javascript"> </script><script src="/jsf12/a4j/g/3_3_0.GAscripts/menu.js.jsf" type="text/javascript"> </script><link class="component" href="/jsf12/a4j/s/3_3_0.GAcss/dropdownmenu.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><script src="/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/utils.js.jsf" type="text/javascript"> </script><script src="/jsf12/a4j/g/3_3_0.GAorg/ajax4jsf/javascript/scripts/form.js.jsf" type="text/javascript"> </script><script src="/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/form.js.jsf" type="text/javascript"> </script><link class="component" href="/jsf12/a4j/s/3_3_0.GAcss/menucomponents.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><link class="component" href="/jsf12/a4j/s/3_3_0.GAcss/panel.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><script src="/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/skinning.js.jsf" type="text/javascript"> </script></head><body><span id="j_id43:rep">Selected Name:Alex</span><meta name="Ajax-Update-Ids" content="j_id43:rep" /><span id="ajax-view-state"><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="8EgC7hvJoXWgMHaUZxk5rx66APlnNueyP32ajDxbvc/i5akMf2jX5XKw5x7aUn7zH+8/ImgwBMkDgTTdpZOHZ3P40TrkERSZMn1lLi26b5BNXvFOzaTyMQ==" /></span><meta id="Ajax-Response" name="Ajax-Response" content="true" /><!-- MYFACES JAVASCRIPT --> <script type="text/javascript"><!-- function getScrolling() { var x = 0; var y = 0;if (self.pageXOffset || self.pageYOffset) { x = self.pageXOffset; y = self.pageYOffset; } else if ((document.documentElement && document.documentElement.scrollLeft)||(document.documentElement && document.documentElement.scrollTop)) { x = document.documentElement.scrollLeft; y = document.documentElement.scrollTop; } else if (document.body) { x = document.body.scrollLeft; y = document.body.scrollTop; } return x + "," + y; } //--></script> </body></html>
    debug[17:39:34,106]: Header Ajax-Expired not found, search in <meta>
    debug[17:39:34,106]: search for elements by name 'meta' in element #document
    debug[17:39:34,106]: Find <meta name='Ajax-Update-Ids' content='j_id43:rep'>
    debug[17:39:34,107]: Find <meta name='Ajax-Response' content='true'>
    debug[17:39:34,107]: Header Ajax-Update-Ids not found, search in <meta>
    debug[17:39:34,107]: search for elements by name 'meta' in element #document
    debug[17:39:34,107]: Find <meta name='Ajax-Update-Ids' content='j_id43:rep'>
    debug[17:39:34,107]: Update page by list of rendered areas from response j_id43:rep
    debug[17:39:34,107]: search for elements by name 'script' in element #document
    debug[17:39:34,108]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.PrototypeScript.jsf
    debug[17:39:34,108]: Such element exist in document
    debug[17:39:34,108]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.AjaxScript.jsf
    debug[17:39:34,108]: Such element exist in document
    debug[17:39:34,109]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAscripts/menu.js.jsf
    debug[17:39:34,109]: Such element exist in document
    debug[17:39:34,109]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/utils.js.jsf
    debug[17:39:34,109]: Such element exist in document
    debug[17:39:34,109]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg/ajax4jsf/javascript/scripts/form.js.jsf
    debug[17:39:34,109]: Such element exist in document
    debug[17:39:34,109]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/form.js.jsf
    debug[17:39:34,110]: Such element exist in document
    debug[17:39:34,110]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/skinning.js.jsf
    debug[17:39:34,110]: Such element exist in document
    debug[17:39:34,110]: search for elements by name 'link' in element #document
    debug[17:39:34,110]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/basic_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:39:34,111]: Such element exist in document
    debug[17:39:34,111]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/extended_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:39:34,111]: Such element exist in document
    debug[17:39:34,111]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAcss/toolBar.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:39:34,111]: Such element exist in document
    debug[17:39:34,112]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAcss/dropdownmenu.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:39:34,112]: Such element exist in document
    debug[17:39:34,112]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAcss/menucomponents.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:39:34,112]: Such element exist in document
    debug[17:39:34,112]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAcss/panel.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:39:34,112]: Such element exist in document
    debug[17:39:34,112]: call getElementById for id= org.ajax4jsf.queue_script
    debug[17:39:34,113]: Update page part from call parameter for ID j_id43:rep
    debug[17:39:34,113]: call getElementById for id= j_id43:rep
    debug[17:39:34,113]: Replace content of node by replaceChild()
    debug[17:39:34,113]: search for elements by name 'script' in element span
    debug[17:39:34,113]: Scripts in updated part count : 0
    debug[17:39:34,114]: call getElementById for id= org.ajax4jsf.oncomplete
    debug[17:39:34,114]: Processing updates finished, no oncomplete function to call
    debug[17:39:34,114]: Update part of page for Id: j_id43:rep successful
    debug[17:39:34,114]: call getElementById for id= ajax-view-state
    debug[17:39:34,114]: Hidden JSF state fields: [object HTMLSpanElement]
    debug[17:39:34,114]: Namespace for hidden view-state input fields is undefined
    debug[17:39:34,114]: search for elements by name 'input' in element span
    debug[17:39:34,115]: Replace value for inputs: 10 by new values: 1
    debug[17:39:34,115]: Input in response: javax.faces.ViewState
    debug[17:39:34,115]: Found same input on page with type: hidden
    debug[17:39:34,115]: Found same input on page with type: hidden
    debug[17:39:34,115]: search for elements by name 'INPUT' in element span
    debug[17:39:34,115]: Replace value for inputs: 10 by new values: 0
    debug[17:39:34,116]: call getElementById for id= _A4J.AJAX.focus
    debug[17:39:34,116]: No focus information in response


    Code debugg second clic : 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
    debug[17:40:36,239]: Have Event [object Object] with properties: target: [object HTMLInputElement], srcElement: undefined, type: click
    debug[17:40:36,240]: Query preparation for form 'j_id43' requested
    debug[17:40:36,240]: Append hidden control j_id43_SUBMIT with value [1] and value attribute [1]
    debug[17:40:36,241]: Append hidden control autoScroll with value [] and value attribute [null]
    debug[17:40:36,241]: Append hidden control javax.faces.ViewState with value [8EgC7hvJoXWgMHaUZxk5rx66APlnNueyP32ajDxbvc/i5akMf2jX5XKw5x7aUn7zH+8/ImgwBMkDgTTdpZOHZ3P40TrkERSZMn1lLi26b5BNXvFOzaTyMQ==] and value attribute [8EgC7hvJoXWgMHaUZxk5rx66APlnNueyP32ajDxbvc/i5akMf2jX5XKw5x7aUn7zH+8/ImgwBMkDgTTdpZOHZ3P40TrkERSZMn1lLi26b5BNXvFOzaTyMQ==]
    debug[17:40:36,241]: parameter username with value John
    debug[17:40:36,242]: parameter j_id43:j_id76 with value j_id43:j_id76
    debug[17:40:36,242]: Look up queue with default name
    debug[17:40:36,242]: NEW AJAX REQUEST !!! with form: j_id43
    debug[17:40:36,243]: Start XmlHttpRequest
    debug[17:40:36,244]: Reqest state : 1
    debug[17:40:36,244]: QueryString: AJAXREQUEST=_viewRoot&j_id43_SUBMIT=1&autoScroll=&javax.faces.ViewState=8EgC7hvJoXWgMHaUZxk5rx66APlnNueyP32ajDxbvc%2Fi5akMf2jX5XKw5x7aUn7zH%2B8%2FImgwBMkDgTTdpZOHZ3P40TrkERSZMn1lLi26b5BNXvFOzaTyMQ%3D%3D&username=John&j_id43%3Aj_id76=j_id43%3Aj_id76&
    debug[17:40:36,245]: Reqest state : 1
    debug[17:40:36,343]: Reqest state : 2
    debug[17:40:36,344]: Reqest state : 3
    debug[17:40:36,344]: Reqest state : 4
    debug[17:40:36,345]: Reqest end with state 4
    debug[17:40:36,345]: Response with content-type: text/xml; charset=UTF-8
    debug[17:40:36,345]: Full response content: <?xml version="1.0"?> <html xmlns="http://www.w3.org/1999/xhtml"><head><title></title><link class="component" href="/jsf12/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/basic_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><link class="component" href="/jsf12/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/extended_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" media="rich-extended-skinning" rel="stylesheet" type="text/css" /><link class="component" href="/jsf12/a4j/s/3_3_0.GAcss/toolBar.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><script src="/jsf12/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.PrototypeScript.jsf" type="text/javascript"> </script><script src="/jsf12/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.AjaxScript.jsf" type="text/javascript"> </script><script src="/jsf12/a4j/g/3_3_0.GAscripts/menu.js.jsf" type="text/javascript"> </script><link class="component" href="/jsf12/a4j/s/3_3_0.GAcss/dropdownmenu.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><script src="/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/utils.js.jsf" type="text/javascript"> </script><script src="/jsf12/a4j/g/3_3_0.GAorg/ajax4jsf/javascript/scripts/form.js.jsf" type="text/javascript"> </script><script src="/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/form.js.jsf" type="text/javascript"> </script><link class="component" href="/jsf12/a4j/s/3_3_0.GAcss/menucomponents.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><link class="component" href="/jsf12/a4j/s/3_3_0.GAcss/panel.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf" rel="stylesheet" type="text/css" /><script src="/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/skinning.js.jsf" type="text/javascript"> </script></head><body><span id="j_id43:rep">Selected Name:</span><meta name="Ajax-Update-Ids" content="j_id43:rep" /><span id="ajax-view-state"><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="8EgC7hvJoXWgMHaUZxk5rx66APlnNueyP32ajDxbvc/i5akMf2jX5XKw5x7aUn7zH+8/ImgwBMkDgTTdpZOHZ3P40TrkERSZMn1lLi26b5BNXvFOzaTyMQ==" /></span><meta id="Ajax-Response" name="Ajax-Response" content="true" /><!-- MYFACES JAVASCRIPT --> <script type="text/javascript"><!-- function getScrolling() { var x = 0; var y = 0;if (self.pageXOffset || self.pageYOffset) { x = self.pageXOffset; y = self.pageYOffset; } else if ((document.documentElement && document.documentElement.scrollLeft)||(document.documentElement && document.documentElement.scrollTop)) { x = document.documentElement.scrollLeft; y = document.documentElement.scrollTop; } else if (document.body) { x = document.body.scrollLeft; y = document.body.scrollTop; } return x + "," + y; } //--></script> </body></html>
    debug[17:40:36,346]: Header Ajax-Expired not found, search in <meta>
    debug[17:40:36,346]: search for elements by name 'meta' in element #document
    debug[17:40:36,346]: Find <meta name='Ajax-Update-Ids' content='j_id43:rep'>
    debug[17:40:36,347]: Find <meta name='Ajax-Response' content='true'>
    debug[17:40:36,347]: Header Ajax-Update-Ids not found, search in <meta>
    debug[17:40:36,347]: search for elements by name 'meta' in element #document
    debug[17:40:36,348]: Find <meta name='Ajax-Update-Ids' content='j_id43:rep'>
    debug[17:40:36,348]: Update page by list of rendered areas from response j_id43:rep
    debug[17:40:36,348]: search for elements by name 'script' in element #document
    debug[17:40:36,348]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.PrototypeScript.jsf
    debug[17:40:36,349]: Such element exist in document
    debug[17:40:36,349]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg.ajax4jsf.javascript.AjaxScript.jsf
    debug[17:40:36,350]: Such element exist in document
    debug[17:40:36,350]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAscripts/menu.js.jsf
    debug[17:40:36,350]: Such element exist in document
    debug[17:40:36,351]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/utils.js.jsf
    debug[17:40:36,351]: Such element exist in document
    debug[17:40:36,351]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg/ajax4jsf/javascript/scripts/form.js.jsf
    debug[17:40:36,351]: Such element exist in document
    debug[17:40:36,352]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/form.js.jsf
    debug[17:40:36,352]: Such element exist in document
    debug[17:40:36,352]: <script> in response with src=/jsf12/a4j/g/3_3_0.GAorg/richfaces/renderkit/html/scripts/skinning.js.jsf
    debug[17:40:36,353]: Such element exist in document
    debug[17:40:36,353]: search for elements by name 'link' in element #document
    debug[17:40:36,354]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/basic_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:40:36,354]: Such element exist in document
    debug[17:40:36,354]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAorg/richfaces/renderkit/html/css/extended_both.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:40:36,355]: Such element exist in document
    debug[17:40:36,355]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAcss/toolBar.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:40:36,355]: Such element exist in document
    debug[17:40:36,356]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAcss/dropdownmenu.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:40:36,356]: Such element exist in document
    debug[17:40:36,356]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAcss/menucomponents.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:40:36,356]: Such element exist in document
    debug[17:40:36,357]: <link> in response with src=/jsf12/a4j/s/3_3_0.GAcss/panel.xcss/DATB/eAF7sqpgb-jyGdIAFrMEaw__.jsf
    debug[17:40:36,357]: Such element exist in document
    debug[17:40:36,357]: call getElementById for id= org.ajax4jsf.queue_script
    debug[17:40:36,357]: Update page part from call parameter for ID j_id43:rep
    debug[17:40:36,358]: call getElementById for id= j_id43:rep
    debug[17:40:36,358]: Replace content of node by replaceChild()
    debug[17:40:36,359]: search for elements by name 'script' in element span
    debug[17:40:36,359]: Scripts in updated part count : 0
    debug[17:40:36,359]: call getElementById for id= org.ajax4jsf.oncomplete
    debug[17:40:36,360]: Processing updates finished, no oncomplete function to call
    debug[17:40:36,360]: Update part of page for Id: j_id43:rep successful
    debug[17:40:36,360]: call getElementById for id= ajax-view-state
    debug[17:40:36,360]: Hidden JSF state fields: [object HTMLSpanElement]
    debug[17:40:36,361]: Namespace for hidden view-state input fields is undefined
    debug[17:40:36,361]: search for elements by name 'input' in element span
    debug[17:40:36,361]: Replace value for inputs: 10 by new values: 1
    debug[17:40:36,361]: Input in response: javax.faces.ViewState
    debug[17:40:36,362]: Found same input on page with type: hidden
    debug[17:40:36,362]: Found same input on page with type: hidden
    debug[17:40:36,362]: search for elements by name 'INPUT' in element span
    debug[17:40:36,363]: Replace value for inputs: 10 by new values: 0
    debug[17:40:36,363]: call getElementById for id= _A4J.AJAX.focus
    debug[17:40:36,363]: No focus information in response

    Au premier clic, je vois apparaitre dans ma console le nom "Alex" (affiché dans le setTest) mais au clic suivant, rien.

    j'ai testé de lancé un autre appel a4j:actionparam sur un autre bean, celui-ci va s'exécuter, mais encore une seule fois.

    En gros ce que je déduis, c'est que je ne peux modifier à l'aide d'un <a4j:actionparam> qu'une seule fois la valeur d'un bean... ce qui peux être génant.

    Voilà, si quelqu'un a une explication, car forcément tout deviens tout de suite plus limité.

    Edit: on voit bien que les requetes ajax s'exécute bien. la seule différence entre les deux est que dans le premier cas, la requête renvoie le composant à reRender avec le nom, et dans le cycle suivant sans le nom (ce qui est logique, puisque le set ne s'est pas exécuter, la valeur "test" du bean est donc null).

  13. #13
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    faut mettre le bean en session ou lui ajouter un keepAlive.
    et il vaut mieux prendre la version 3.3.1.GA qui contient pas mal de corrections sinon la dernière 3.3.2.SR1.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Je suis passé en 3.3.2.SR1. Toujours le même problème.

    J'ai passé le managed-bean en session. Cette fois le premier nom reste afficher tout le monde, même si on appuie sur le second bouton après.

    Est ce que ca ne serais pas un problème de config lié à richface/a4j?

    J'ai bien mis ce qui est indiqué au niveau du web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <filter>
    		<display-name>RichFaces Filter</display-name>
    		<filter-name>richfaces</filter-name>
    		<filter-class>org.ajax4jsf.Filter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>richfaces</filter-name>
    		<servlet-name>Faces Servlet</servlet-name>
    		<dispatcher>REQUEST</dispatcher>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>INCLUDE</dispatcher>
    	</filter-mapping>

  15. #15
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    C'est tout ce que as dans la page?

    qu'est ce qui se passe lorsque tu click sur l'autre boutton?
    quels sont les jars de ton dossier lib?

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Attention la liste est longue (J'utilise Maven, qui a tendance à se lacher je trouve)

    org/apache/myfaces/tomahawk/tomahawk/1.1.6/tomahawk-1.1.6.jar
    org/apache/myfaces/core/myfaces-impl/1.2.2/myfaces-impl-1.2.2.jar
    org/apache/myfaces/core/myfaces-api/1.2.2/myfaces-api-1.2.2.jar
    org/richfaces/ui/richfaces-ui/3.3.2.SR1/richfaces-ui-3.3.2.SR1.jar
    org/richfaces/framework/richfaces-impl/3.3.2.SR1/richfaces-impl-3.3.2.SR1.jar
    org/richfaces/framework/richfaces-api/3.3.2.SR1/richfaces-api-3.3.2.SR1.jar
    commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
    commons-digester/commons-digester/1.8/commons-digester-1.8.jar
    commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar
    commons-collections/commons-collections/3.2/commons-collections-3.2.jar
    commons-discovery/commons-discovery/0.4/commons-discovery-0.4.jar
    commons-codec/commons-codec/1.3/commons-codec-1.3.jar
    commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.jar
    commons-fileupload/commons-fileupload/1.0/commons-fileupload-1.0.jar
    commons-el/commons-el/1.0/commons-el-1.0.jar
    commons-lang/commons-lang/2.1/commons-lang-2.1.jar
    commons-dbcp/commons-dbcp/20030825.184428/commons-dbcp-20030825.184428.jar
    commons-pool/commons-pool/20030825.183949/commons-pool-20030825.183949.jar
    oro/oro/2.0.8/oro-2.0.8.jar
    jstl/jstl/1.2/jstl-1.2.jar
    com/sun/facelets/jsf-facelets/1.1.11/jsf-facelets-1.1.11.jar
    junit/junit/4.0/junit-4.0.jar
    org/springframework/spring/2.5.6.SEC01/spring-2.5.6.SEC01.jar
    org/springframework/spring-hibernate3/2.0.8/spring-hibernate3-2.0.8.jar
    org/springframework/spring-beans/2.0.8/spring-beans-2.0.8.jar
    org/springframework/spring-core/2.0.8/spring-core-2.0.8.jar
    org/springframework/spring-context/2.0.8/spring-context-2.0.8.jar
    org/springframework/spring-dao/2.0.8/spring-dao-2.0.8.jar
    org/springframework/spring-jdbc/2.0.8/spring-jdbc-2.0.8.jar
    aopalliance/aopalliance/1.0/aopalliance-1.0.jar
    org/hibernate/hibernate/3.2.7.ga/hibernate-3.2.7.ga.jar
    net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar
    javax/transaction/jta/1.0.1B/jta-1.0.1B.jar
    asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar
    dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
    antlr/antlr/2.7.6/antlr-2.7.6.jar
    cglib/cglib/2.1_3/cglib-2.1_3.jar
    asm/asm/1.5.3/asm-1.5.3.jar
    postgresql/postgresql/8.4-701.jdbc4/postgresql-8.4-701.jdbc4.jar
    /usr/java/jdk1.6.0_16/jre/lib/resources.jar
    /usr/java/jdk1.6.0_16/jre/lib/rt.jar
    /usr/java/jdk1.6.0_16/jre/lib/jsse.jar
    /usr/java/jdk1.6.0_16/jre/lib/jce.jar
    /usr/java/jdk1.6.0_16/jre/lib/charsets.jar
    /usr/java/jdk1.6.0_16/jre/lib/ext/localedata.jar
    /usr/java/jdk1.6.0_16/jre/lib/ext/sunjce_provider.jar
    /usr/java/jdk1.6.0_16/jre/lib/ext/dnsns.jar
    /usr/java/jdk1.6.0_16/jre/lib/ext/sunpkcs11.jar

    Et oui, j'ai recréé une page vide pour faire le test. Donc il n'y a bien que le bout de code fourni.

    En fin de compte, tout fonctionnerai bien, si les requetes ajax ne s'effectuait pas qu'une seule fois. C'est vraiment là tout le problème, et j'ai beau chercher partout, je ne trouve pas d'info la dessus, et j'ai beau remanier mon code, je ne trouve pas de solutions.

  17. #17
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu peux loguer les phases JSF, voir ce qui se passe à la deuxième requete.

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    j'ai recherché un peu ce week end et j'ai trouvé une autre solution(que j'avais raté lors de ma première recherche).

    Je suis passé par un <f:setPropertyActionListener> plus que par un <a4j:actionParam> et ca marche normalement. En gros, ca s'éxecute plusieurs fois sans problème, je peux donc avoir les fiches différentes (et pas me retrouver toujours sur la même fiche).

    J'ai donc contourner le problème plutôt que résolu, mais c'est toujours ça pour le moment.

    Sinon pour les log, j'ai suivi le point dans la FAQ, mais il ne m'affiche pas les log JSF à la sortie. M'enfin je devrai pouvoir résoudre ce problème. (j'avoue ne pas savoir bien utiliser log4j malgré les différents tuto que j'ai trouvé).

    Merci beaucoup pour le coup de main.

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Bon en fait je me suis emballé, car f:setPropertyActionListener ne permet pas de récup une valeur transmise par le <rich:componentControl>

    du coup, il n'interprète pas {id} comme étant {tbPersonneBean.tbPersonneId} mais juste "{id}".

    Bref, me revoilà au point de départ

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 4
    Points
    4
    Par défaut
    Alors pour les log de JSF.

    Premier appel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    beforePhase RESTORE_VIEW(1)
    afterPhase RESTORE_VIEW(1)
    beforePhase APPLY_REQUEST_VALUES(2)
    afterPhase APPLY_REQUEST_VALUES(2)
    beforePhase PROCESS_VALIDATIONS(3)
    afterPhase PROCESS_VALIDATIONS(3)
    beforePhase UPDATE_MODEL_VALUES(4)
    afterPhase UPDATE_MODEL_VALUES(4)
    beforePhase INVOKE_APPLICATION(5)
    set Alex
    afterPhase INVOKE_APPLICATION(5)
    beforePhase RENDER_RESPONSE(6)
    get Alex
    afterPhase RENDER_RESPONSE(6)
    La fonction effectue bien le set avec le bouton Alex, et récup la valeur stockée: Alex

    Second clic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    beforePhase RESTORE_VIEW(1)
    afterPhase RESTORE_VIEW(1)
    beforePhase APPLY_REQUEST_VALUES(2)
    afterPhase APPLY_REQUEST_VALUES(2)
    beforePhase PROCESS_VALIDATIONS(3)
    afterPhase PROCESS_VALIDATIONS(3)
    beforePhase UPDATE_MODEL_VALUES(4)
    afterPhase UPDATE_MODEL_VALUES(4)
    beforePhase INVOKE_APPLICATION(5)
    afterPhase INVOKE_APPLICATION(5)
    beforePhase RENDER_RESPONSE(6)
    get Alex
    afterPhase RENDER_RESPONSE(6)
    La fonction set n'est pas lancé, on récup donc la valeur stockée précédemment, Alex.

    Au final, on se retrouve donc avec 1 seul set. Et je ne vois pas toujours pas la raison.
    Est ce qu'il est possible d'afficher plus de chose dans les logs?

    j'ai cherché si ce n'était pas un problème de configuration, mais je n'ai rien vu, mais peut être que je suis passé à coté.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Requête SQL: Afficher Gratuit/Payant en une seule fois
    Par Sethenssen dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/11/2009, 21h43
  2. Réponses: 1
    Dernier message: 25/09/2009, 13h03
  3. [MySQL] requête select une seule fois
    Par speedylol dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/02/2009, 07h40
  4. [Prototype] Envoie qu'une seule fois d'une requête
    Par akrogames dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 20/05/2008, 12h48
  5. Fusionner 3 requêtes avec un SUM en une seule
    Par David Guillouet dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/07/2004, 16h54

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