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 :

Afficher une String dans 2 champs différents


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut Afficher une String dans 2 champs différents
    Bonjour,
    je bosse là-dessus et j'arrive pas à trouver une solution élégante. Peut être que j'ai le nez collé dessus :

    Il y a un String dans un backing bean, et à l'écran il doit être affiché dans 2 input text différents:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Client {
      private String idPermanent;
      public String getIdPermanent() {return idPermanent;}
      public void setIdPermanent(String id) {this.idPermanent = id;} 
    }
    Et un extrait du JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:outputText styleClass="outputText" id="text121" value="#{fichierRessources.titreIdPermanent}:"></h:outputText>
    <h:inputText styleClass="inputText" id="texteIdCodeNational" size="3" maxlength="3"></h:inputText>
    <h:inputText styleClass="inputText" size="10" id="texteIdCodeClient">
    </h:inputText>
    Le premier input affiche les 3 premiers caractères, le 2e input affiche le reste. Il ne faut pas splitter la String en 2 dans le backing bean car c'est le même concept, c juste au niveau de la présentation que ça doit être présenté dans 2 input text différents. Une idée quelqu'un ?

  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
    Tu utilises bien le inputText pour la saisie, pas que pour l'affichage ?
    si tu souhaite afficher une valeur déjà existante dans le bean dans l'input avec un formatage particulier de la valeur, c'est le role des converters;

  3. #3
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    C'est vraiment étrange ce que tu cherches à faire...
    Tu peux nous en dire un peu plus ?

    Le problème, c'est que si tes 2 inputs sont reliées à la même chaine de caractères, au moment où JSF va setter les valeurs au niveau du bean, il va y avoir un souci.
    Par exemple, avec la chaine "tatayoyo".

    D'après ce que tu veux faire, si on trouvait une solution pour ça, on aurait :
    1e input --> [tat]
    2e input --> [ayoyo]

    Lors de la soumission du formulaire, JSF ferait :

    monBean.setIdPermanent("tat");
    monBean.setIdPermanent("ayoyo");

    Du coup, ta chaine de caractère vaudrait plus que "ayoyo"...

    Pourrais ne gérerais tu pas 2 String différents ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Le destinataire du logiciel a exprimé le besoin de voir le contenu dans 2 input text différent, de façon à faciliter la saisie à l'écran (un des 2 codes est consulté moins souvent).

    Dans le modèle de données, c'est conservé dans une seule String. On avait assumé que la présentation pouvait extraire des portions de String pour l'affichage.

    Sniper: d'accord qu'avec le converter, c'est possible d'afficher (rendering) une String dans un input text selon un formatage spécifique. Donc ça prend 2 converter, un pour chaque type de formatage requis. Humm, lorsque le formulaire est soumis, est-ce que les converter sont en mesure de concaténer les 2 portions de String en une seule ?

    romaintaz: effectivement, quand on ajoute un 'binding' on constate le problème. Rajouté l'attribut value dans la JSP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:inputText styleClass="inputText" id="texteIdCodeNational" size="3" maxlength="3" value="#{pc_PageClient.client.idPermanent}"></h:inputText>

  5. #5
    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
    Je te conseille de faire pour chaque inputText un champs de type String et gérer ensuite la valeur saisie dans le bean, formater les deux pour constituer une seule valeur.
    Si tu utilise directement un DAO, tu peux passer par un bean intermédiaire pour séparer le champs en question en deux valeurs.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Bon la solution sera de créer un JSF Custom Tag, qui acceptera un "value-binding" (le String en entier du "backing-beans") mais affichera plusieurs inputText pour l'affichage.

    Évidemment, le composant sera conçu de manière suffisamment générique pour supporter tout les cas où une relation [modèle --> présentation] avec comme cardinalité [1 --> n] sera utilisé. Donc, il sera possible d'afficher 1 champ, 2 champ, etc. De plus, un attribut permettra de passer la longueur de chacun des champs comme attribut.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/07/2010, 19h48
  2. Afficher une valeur dans un champ de formulaire
    Par majudis dans le forum IHM
    Réponses: 4
    Dernier message: 07/01/2010, 12h29
  3. Réponses: 3
    Dernier message: 20/07/2009, 11h15
  4. script de modification d'une string dans un champ
    Par cfrancois dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/08/2007, 11h11
  5. [MySQL] Afficher une requête dans un champ texte
    Par SnickeursMan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/11/2005, 10h07

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