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 :

[RichFaces] Question sur keepAlive


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut [RichFaces] Question sur keepAlive
    Bonjour,

    J'ai question sur la balise <keepAlive>. Est-ce que le managerbean en scope request est ré instancié, même avec la balise keepAlive. Ou alors une autre instance du manager bean est récréé et lui redonne ces anciennes valeurs ? (je sens que je pose une question très c... ^^ Mais je suis pas sûr) En tout cas pour ma page à chaque fois qu'une requête Ajax est faite, le management bean et soit ré instancié ou une autre instance est créée.

    Enfin je pense surtout que j'ai mal placé cette balise dans ma page. Je vous fourni les sources de ma page, je ne sais pas si c'est la bonne place :

    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
     
    <a4j:keepAlive beanName="databaseexplorer"/>
    <a4j:form>
        <ui:include src="includes/menu/domainmenu.xhtml"/>
        <div class="panel_main">
            <div class="panel_table">
                <rich:extendedDataTable value="#{databaseexplorer.listTable}" selectionMode="single" selection="#{databaseexplorer.selection}" var="list" width="50%" id="databaseTable" columnClasses="col">
                    <f:facet name="header">
                        <h:outputText value="#{databaseexplorer.tableName}"/>
                    </f:facet>
                    <rich:columns sortBy="#{list[i]}" sortable="#{i!=0}" sortOrder="#{columnName.sortOrder}" selfSorted="false" value="#{databaseexplorer.columnsName}" label="#{databaseexplorer.columnsName[i].header}" var="columnName" index="i" visible="#{databaseexplorer.nameColumnName == columnName.header ? 'true':'false' || i==0}" width="#{i==0?'50px' : '25%'}">
                        <f:facet name="header">
                            <h:panelGroup>
                                <h:selectBooleanCheckbox rendered="#{i==0}" value="#{databaseexplorer.deleteCheckboxValue}">
                                    <a4j:support event="onclick" action="#{databaseexplorer.deleteCheckboxSubmit}" reRender="databaseTable"/>
                                </h:selectBooleanCheckbox>
                                <h:outputText value="#{columnName.header}" rendered="#{i!=0}"/>
                            </h:panelGroup>
                        </f:facet>
                        <rich:inplaceInput value="#{list[i]}" rendered="#{i!=0}" selectOnEdit="true" editEvent="ondblclick">
                            <a4j:support event="onviewactivated" data="#{columnName.header}##{list[1]}##{list[i]}" actionListener="#{databaseexplorer.processAction}"/>
                        </rich:inplaceInput>
                        <h:selectBooleanCheckbox value="#{list[i]}" rendered="#{i==0}"/>
                        <f:facet name="footer">
                            <a4j:commandButton value="Delete row(s)" action="#{databaseexplorer.deleteRowsSubmit}" reRender="databaseTable" rendered="#{i==0}"/>
                        </f:facet>
                    </rich:columns>
                    <a4j:support event="onselectionchange" action="#{databaseexplorer.takeSelection}" reRender="information"/>
                </rich:extendedDataTable>
                <a4j:commandButton value="Insert" action="#{databaseexplorer.insertRowsSubmit}"/>
                <a4j:commandButton value="Reset orderby" action="#{databaseexplorer.resetOrderBy}" reRender="databaseTable"/>
            </div>
            <div class="panel_information">
                <rich:panel id="information">
                    <f:facet name="header">
                        <h:outputText value="Information (Item Id : #{databaseexplorer.arraySelection[databaseexplorer.nameColumnId]})"/>
                    </f:facet>
                    <h:panelGrid columns="2">
                        <h:outputText value="Create by : "/>
                        <h:outputText value="#{databaseexplorer.arraySelection['CREATED_USER']}"/>
     
                        <h:outputText value="On : "/>
                        <h:outputText value="#{databaseexplorer.arraySelection['CREATED_DATE']}"/>
     
                        <h:outputText value="Name : "/>
                        <h:outputText value="#{databaseexplorer.arraySelection[databaseexplorer.nameColumnName]}"/>
     
                        <h:outputText value="Description : "/>
                        <h:outputText value="#{databaseexplorer.arraySelection[databaseexplorer.nameColumnDescription]}"/>
                    </h:panelGrid>
                </rich:panel>
            </div>
        </div>
    </a4j:form>
    En fait j'ai un Systeme.out.println("test"); dans mon constructeur, et à chaque fois que je clique sur une ligne des mon tableau, test est affiché sur la console.

    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
    Par défaut
    comment tu sais qu 'il est réinitialiser??

    normalement le bean en keepAlive reste actif pendant les requêtes ajax.
    N'oublie pas de mettre le bean serializable.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    Merci , effectivement j'avais oublié de le mettre serializable. Mais ça à rien changé.

    Sinon je sais pas si il est réinitialisé, mais à chaque requete ajax il passe par le constructeur, alors que normalement il devrais pas ?

  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
    normalement non..vérifie que le bean est bien le même déclaré dans faces-config.
    Sinon tu peux vérifier si il existe des erreurs avec a4j:log.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    Ba en fait tout marche très bien, j'ai aucune erreur, la page fonctionne bien. C'est juste quand je fait un orderBy sur une colonne et que je le remet sur la colonne par défaut, ça ne marche pas. Les valeurs du tableau ne change pas, par contre au niveau de la selection c'est bon. Lorsque je clique sur une ligne, les valeurs qui s'affichent dans le panelgroup sont bonnes mais ne correspondent pas à la ligne selectionnée.

    Mais ce que je ne comprend pas c'est pourquoi à chaque requete ça passe par le constructeur.

    Et le bean est bien configuré dans le faces-context puisque j'en est l'accés dans ma page. Enfin je te le fourni quand même au cas ou tu verrai un truc louche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <managed-bean>
        <managed-bean-name>databaseexplorer</managed-bean-name>
        <managed-bean-class>com.smartattitudes.framework.beans.DabaseExplorer</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>navigation</property-name>
            <property-classe>com.smartattitudes.framework.beans.NavigationBean</property-classe>
            <value>#{NavigationBean}</value>
        </managed-property>
    </managed-bean>
    Et encore merci de m'avoir répondu

  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
    Par défaut
    Tu utilise quoi en state_saving_method?
    Il vaut utiliser un h:form simple, a4j:form est utile que pour quelques cas sépecifique.

    <a4j:log/> te donnera les logs ajax, et s'il y'a des erreurs dans keepAlive.

Discussions similaires

  1. 2 questions sur fileupload de richfaces
    Par kam81 dans le forum JSF
    Réponses: 0
    Dernier message: 14/06/2009, 17h10
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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