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 :

Fonctionnement incomprehensif du dataTable


Sujet :

JSF Java

  1. #1
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut Fonctionnement incomprehensif du dataTable
    Bonjour,
    J'utilisse une datatable dans une page JSF, et là j'avoue que je pige pas completement son fonctionnement.
    Dans ce datatable j'ai plusieurs colonnes parmi lesquelles j'ai une colonne checkbox et une colonne de liens simples.
    Voila le constat:
    Quand je mets mon managedBean qui gere cet ecran en session, les colonnes cases à cocher et liens sont bien actifs, quand je dis "actifs", c'est quand cliquant sur un des liens de la colonne il me mene bien à la page voulue, mais dès lors que je passe mon managedBean en scope "request" , les liens deviennent completement inactifs.
    Quelqu'un a til déjà rencontré ce pb?
    J'y vois vraiment pas le rapport entre la session et la gestion du contenu de la datatable.

  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
    Par défaut
    un bean en scope request est disponible que pendant la requete, ensuite il est réinitialiser. Donc, si tu coche des lignes à la deuxième requete, elles seront automatiquement décochées.

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    T'as pas bien compris mon pb, le principe du mode scope j'ai à peu près compris.
    En fait ce que je ne comprends pas
    - c'est pourquoi mes liens d'une colonne du datatable sont completement inactifs quand le managedbean est en scope request
    -La colonne case à cocher comporte à l'entete une case pour cocher tous, j'ai collé à cette case une action a4J, laquelle est active en scope request et session, mais seulement les cases à cocher de cette même colonne ne sont actifs qu'en session.
    Voila l'entete de mon datatable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <rich:dataTable rowClasses="colorLignePaire,colorLigneImpaire"  value="#{situationPersoFam.dataBean.listeCellulesParentales}" var="liste" id="listeCellules" style=" width : 100%;" >
    	        		        <rich:column style="width:3%" headerClass="enteteTable">
    			          	 		<f:facet name="header">
    					  	    		<h:selectBooleanCheckbox value="#{situationPersoFam.dataBean.cocheTous}">
    					  	      			<a4j:support event="onclick" action="#{situationPersoFam.selectDeselectAll}" reRender="lineRow" />
    					  	    		</h:selectBooleanCheckbox>
    						   		</f:facet>
    	   	 		  	 			<h:selectBooleanCheckbox id="lineRow" value="#{liste.rowCoche}">
                                  		<a4j:support event="onclick" action="#{situationPersoFam.updateColDataTable}" reRender="listeCellules"/>
    					  	    	</h:selectBooleanCheckbox>
    			      	 	    </rich:column> 
    ...
    Le but étant que je ne veux pas passer mon managedBean en session juste pour gérer le dysfonctionnement du datatable, car ce managed Bean porte plusieurs autres champs.
    Une idée?

  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
    Par défaut
    tu envoies une requete ajax, donc, le bean sera disponible que pour cette requete, une requete ajax est comme une requete normale.
    tu peux utiliser keepAlive avec le scope request pour garder le bean actif pendant plusieurs requêtes ajax.

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    et le keepAlive je le mets à quel niveau ?

  6. #6
    Membre éprouvé Avatar de rushtakn
    Inscrit en
    Mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 213
    Par défaut
    Ah ouais, je veux etre sur d'avoir bien compris parce que ça m'a l'air mystique.
    T'as un dataTable avec une colonne contenant des liens, donc des composants h:commandLink.
    Quand tu passes ton managed-bean en scope request ces liens sont inactifs, tu veux dire qu'il ne sont plus cliquables ou qu'on peut cliquer mais qu'il ne se passe rien ?
    Le fait que tes liens soient inactifs n'a à priori rien à voir avec ta colonne de checkbox?

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Eh oui t'as bien compris, les liens sont inactifs, ca fait rien quand on clique dessus, pareil pour la colonne case à cocher, aucune action a4J de mes cases à cocher ne fait un appel serveur, mais des que je passe le bean en session tout marche bien.

  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
    Par défaut
    non les liens actifs ou inactifs n'ont rien à voir avec le scope session, c'est la variable du bean qui correspond à la checkBox qui peut être impactée
    y'a rien de mystique c'est les principes du protocole http.

  9. #9
    Membre éprouvé Avatar de rushtakn
    Inscrit en
    Mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 213
    Par défaut
    oui mais il semble dire qu'il n'y a aucun appel serveur, donc pas de requete générée quand il clique sur un lien ou sur sa checkbox.

  10. #10
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Peux tu être plus explicite sur cette ligne stp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tu peux utiliser keepAlive avec le scope request pour garder le bean actif pendant plusieurs requêtes ajax.
    Je ne vois pas bien son usage?
    Ou suis je censé declarer ce keepAlive? et quel temps dois je lui attribuer?

  11. #11
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:keepAlive beanName="nomDuBean"/>
    voilà la démo de Richfaces.

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/04/2011, 10h35
  2. datatable, fonctionnement etrange
    Par koack dans le forum JSF
    Réponses: 5
    Dernier message: 17/02/2011, 13h54
  3. Réponses: 1
    Dernier message: 02/02/2010, 01h00
  4. datatable rendered ne fonctionne pas
    Par ang.net dans le forum JSF
    Réponses: 1
    Dernier message: 07/07/2008, 20h10
  5. fonctionnement du composant dataTable
    Par hibao dans le forum JSF
    Réponses: 3
    Dernier message: 02/07/2008, 09h15

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