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 :

Problème initialisation bean


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut Problème initialisation bean
    Bonjour,

    Je rencontre un problème avec une page JSF qui est associé à un bean.

    Si trop de données sont modifiées le mapping sur le bean n'est pas réalisé et je perd mes données.

    • La page contient beaucoup de champs (1000 quasiment).
    • Le problème ne semble pas être dû à la taille des données envoyées en POST (en modifiant petit à petit cela fonctionne et la taille des données envoyée en POST est supérieure à ce qui est envoyé lors du problème)


    Environnement:

    • Tomcat 5.5
    • JSF 1.1
    • Tomahawk 1.1.6


    Savez-vous d'où peuvent provenir ces problèmes?

    Merci pour votre aide,
    Cédric

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu peux etre plus précis? Le bean n'est pas mis a jour mais l'action est effectuée? As-tu essayé de changer de librairie JSF (passer de sun à myfaces ou vice-versa). Je n'ai pas de formulaire aussi gros, mais j'ai des formulaires de près de 500 champs qui fonctionnent sans broncher. As-tu bien mis un <h:messages/> dans la page pour voir toutes les erreurs de validation JSF? As-tu utiliser des outils comme par exemple facestrace pour voir ce qui se passe? Dans le pire des cas un sniff du submit avec des outils comme wireshark pourrait etre utile afin de déterminer ce qui se passe.

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    Merci pour ta réponse.

    J'ai positionné un TCPmon pour analyser les requêtes.
    Dans tous les cas les données en POST sont correctement envoyées.

    Mon problème provient de champs initialisés par JavaScript par un popup externe. Pour des raisons de présentation un champ readonly est positionnée avec une valeur lisible.

    Voici le code simplifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html:inputHidden id="msgId" value="#{bean.id}"/>
    <html:inputHidden id="msgHidden" value="#{bean.message}"/>
    <html:inputText id="msg" readonly="true" value="#{bean.message}" />
     
    <html:outputLink id="link" onclick="fonctionPourChangerMonMessage(); return false;" value="#">
    <html:graphicImage value="#{common.folder}" />
    </html:outputLink>
    Les trois inputs son modifiés dans le JS du popup.
    Le champ ayant pour id msgHidden me permet de conserver la valeur du message pour affichage.

    En enlevant le readonly j'ai toujours le problème. étrange...

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    J'ai toujours le problème mais j'ai avancé un peu.

    Le problème se produit lors de l'ouverture du popup de sélection du message.

    Si dans ma page de modification j'ouvre 15 fois le popup de sélection du message alors la validation des modification ne fonctionne pas et je retrouve mon bean à l'état initial. Si j'ouvre ce popup 14 fois ma validation du formulaire fonctionne correctement.

    Dans cette page de popup je récupère une liste de messages.
    Si je simplifie la page de popup et que j'enlève <core:view></core:view> (core jsf) je n'ai plus le problème...

    Est-ce que je dois déclarer une règle de navigation spécifique pour les popup ?
    Cette limite à 15 est-elle configurable?

    Merci d'avance,
    Cédric

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    cette popup est une popup JSF? Si oui ton problème viens de là. JSF, pour des raison évidentes d'occupation mémoire, limite le nombre d'états de formulaire mémoirisés. Si tu ouvre trop de popup, JSF perd l'état de ta page initiale, et lors du submit passe alors par un create view, ce qui a pour conséquence d'ignorer ton submit.

    Si t'es sous myfaces, c'est configurable comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <context-param>
            <param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name>
            <param-value>20</param-value>
            <description>Only applicable if state saving method is "server" (= default).
                         Defines the amount (default = 20) of the latest views are stored in session.
            </description>
         </context-param>
    Attention, vu le nombre de champs que tu as, un millier, ca va vite grimper en taille. Compte à la louche un 100aine d'octets par champ. 100*1000*20 vues = 2M de mémoire sur le serveur pour un seul user, juste pour jsf.

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    Bonjour,

    Merci pour ta réponse, MyFaces n'est pas utilisé pour gérer le cycle de vie JSF. Donc ce paramètre ne change pas la limite à 14 ouverture max.

    En revanche j'ai pu régler le problème avec la configuration suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
      </context-param>
    Merci pour ton aide!
    Cédric

Discussions similaires

  1. Problème affichage bean
    Par kokumbo dans le forum Struts 1
    Réponses: 8
    Dernier message: 17/10/2006, 20h43
  2. [WASD5]problème initialisation log4j
    Par david06600 dans le forum Websphere
    Réponses: 1
    Dernier message: 29/08/2006, 13h51
  3. [WinDev 9] Problème initialisation requête
    Par Zipyz dans le forum WinDev
    Réponses: 5
    Dernier message: 27/07/2006, 09h17
  4. problème initialisation de la TAPI
    Par bel76 dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 05/05/2006, 23h13
  5. [Plugin] Problème initialisation plugin ResourcesPlugin
    Par Michael I. dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 06/02/2004, 13h27

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