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 :

<h:inputText> en readonly --> perte de la valeur après validation du formulaire


Sujet :

JSF Java

  1. #1
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut <h:inputText> en readonly --> perte de la valeur après validation du formulaire
    Bonjour,

    J'ai une page qui se présente ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h:inputText value="#{monBean.attribut}" readonly="true" /> 
    <h:commandButton action="#{monBean.methode}" value="Valider" />
    Le forward me redirige vers la même page.

    Le fait d'avoir l'attribut readonly renseigné à "true" fait que je perd la valeur de mon inputText après soumission de la page.

    Est-ce normal ?
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  2. #2
    Membre actif Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 208
    Points
    208
    Par défaut
    Le forward me redirige vers la même page.
    ??? Il est où ton forward? dans ta jsp ou dans ton bean?
    En principe, si tu passe par ton bean et que le traitement est correct, tu ne devrai pas perdre ta valeur, le readonly empeche seulement d'ecrire...

  3. #3
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Bah oui c'est bien ce que je pense aussi mais...

    Mon forward est bel et bien dans le bean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public String methode() {
       //bla bla bla
     
       return "ok";
    }
    Et dans faces-config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <navigation-rule>
            <from-view-id>/mapage.jsp</from-view-id>
            <navigation-case>
                <from-outcome>ok</from-outcome>
                <to-view-id>/mapage.jsf</to-view-id>
            </navigation-case>
    </navigation-rule>
    Ce n'est pas un problème lié à cela, je pratique JSF depuis un bon moment je m'en serais vite apercu.

    On dirait bien que c'est un bug JSF...
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  4. #4
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Salut,

    As tu essaye de mettre une valeur fixe plutot que "monBean.attribut"? Et dans ce cas, est ce qu'elle disparait aussi?
    Quel est le scope du bean dont tu extrai la valeur a afficher?
    Que se passe t'il si tu rafraichis la page par l'explorateur?

    Voila desole pour ces questions un peu en vrac, mais ca peux aider a trouver des pistes.

    Bon courage,
    Tif
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  5. #5
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par TIFéç
    As tu essaye de mettre une valeur fixe plutot que "monBean.attribut"? Et dans ce cas, est ce qu'elle disparait aussi?
    Dans ce cas-ci, la valeur reste bien présente dans l'input

    Citation Envoyé par TIFéç
    Quel est le scope du bean dont tu extrai la valeur a afficher?
    Mon bean est dans le scope Request.

    Citation Envoyé par TIFéç
    Que se passe t'il si tu rafraichis la page par l'explorateur?
    Dans ce cas-ci, la valeur reste bien présente dans l'input


    J'ai également fait le test de mettre un <h:inputText> sans readonly et un <h:inputText> avec, reliés à 2 attributs de mo bean différents. Celui sans le readonly garde sa valeur, l'autre la perd...
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  6. #6
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Salut danyboy85,

    J'imagine deux possibilites qui pourraient peut etre t'aider sans pour autant expliquer correctement ce comportement:
    1) tu lie ton input texte a ton bean et tu lui renvoi la valeur qu'il doit afficher lorsque tu passe dans la methode derrire ton bouton (genre getInputext.setValue(monAttribut))
    2) Sinon en utilisant un outputtext ca pourrai marcher, tu perd la possibilite d'utiliser ton inputtext mais puisque pour le moment il est en read-only

    Je serai quand meme curieu de comprendre pourquoi ca se passe comme ca.

    Bon courage,
    Tif
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  7. #7
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Bonjour Tifèç

    Arrrgh ! Je croyais avoir trouvé un contournement avec ta 2ème dolution mais le même problème survient. Je m'explique :

    En fait ma page est un formulaire de saisie et je voulais qu'on ne puisse pas modifier le champ correspondant à la clé primaire. Au départ j'ai donc fait un inputText avec l'attribut readonly relié à un attribut de mon bean qui dit si on est dans le cas d'un ajout ou d'une modification (ajout--> readonly=false, modification-->readonly=true).

    Avec ta solution, j'ai fais un inputText et un outputText et je les affiche ou non grâce à l'attribut rendered

    <h:inputText value="#{monBean.monChamp}" renderered=#{monBean.modif}>
    <h:outputText value="#{monBean.monChamp}" renderered=#{monBean.modif}>
    //monBean.modif est un boolean


    Sauf qu'on se retrouve dans le même problème !

    Après validation du formulaire, la valeur de mon attribut relié à mon outputText prend la valeur null , ce qui ne se produit pas quand c'est l'inputText qui est affiché.


    Pour ta 1ère solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tu lie ton input texte a ton bean et tu lui renvoi la valeur qu'il doit
     afficher lorsque tu passe dans la methode derrire ton bouton 
    (genre getInputext.setValue(monAttribut))
    ca n'est pas possible car monAttribut a déjà la valeur null à ce moment là du traitement !

    Merci de ton aide !
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  8. #8
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Rebonjour,

    Ca commence a devenir problematique.
    La solution la plus evidente serait de changer le scope de ton bean, mais c'est pas un bon plan car ca risque de provoquer d'autres erreurs plus loin.

    Pour ma part j'utilise un framework proprietaire Oracle (ADF) qui me cache pas mal de choses et en utilisant cette methode j'ai un "pagedef" qui accompagne chacune de mes pages .jspx (jsf). Dans ce pagedef (fichier xml), j'ai les iterateurs utilises dans la page, certaines actions autodeclenchées ou non et un certains nombre de variables qui vont accompagner ma page. Une solution pour moi serait alors de creer une variable qui recupere la valeur de "tonAttribut", car son scope ne serait plus le meme que celui du bean. Par contre le souci c'est que je ne sais pas si c'est realisable en jsf "simple".

    Sinon, tu peuple une variable dans un bean de session et tu t'appuie dessus pour ton affichage.

    En esperant que cela puisse t'aider,
    Bon courage,
    Tif
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Salut
    Au fait j ai eu le même souci que toi.
    Tu peux aussi simplement rajouter un intputhidden dans ta page et tu verras ta valeur sera conservée.
    ex :
    <h:outputText id="otUtilisateur" value="#{UtilisateurBean.id}" />
    <h:inputHidden id="ihUtilisateur" value="#{UtilisateurBean.id}" />

    Je ne sais pas vraiment pourquoi en mettant inputtext readonly ou encore un outputtext seul, la valeur est nu, mais en mettant ça tu contourne ton problème.

    ciao

Discussions similaires

  1. InputText en readonly, perte de la valeur
    Par bahine82 dans le forum JSF
    Réponses: 5
    Dernier message: 28/09/2007, 14h56
  2. Perte de valeurs saisies dans un formulaire
    Par mitje dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/12/2006, 14h35
  3. Perte de la valeur du champ qd on tabule dessus
    Par pekka77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/09/2006, 08h30
  4. [http] perte de requette http après redirection
    Par okoax dans le forum Serveurs (Apache, IIS,...)
    Réponses: 6
    Dernier message: 05/05/2006, 10h31
  5. Jointure, perte systèmatique 1ere valeur...
    Par Pierrinot dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/08/2004, 16h21

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